jQuery ajax:想要对代码进程进行排序

时间:2013-02-27 06:30:05

标签: ajax jquery

我通过ajax从php文件获取数据。基于数据我需要做一些处理。我在代码中添加了一些警报,从中我意识到ajax之外的代码在ajax获取数据之前正在执行。我希望在从php文件接收数据后完成代码。

代码:

$(function () {
    var originalData=""; 
    $.ajax({                                      
      url: 'data.php',                    
      data: "",                        
      dataType: 'text',               
      success: function(data)          
      {
        originalData=data;
        alert("originalData 1 "+ originalData);  
      }
    });

    alert("originalData 2 "+ originalData);  
    ...
      Processing code
    ...
});

警报的顺序是:

首先:“originalData 2”

第二名:“originalData 1”

一个选项是我在Processing code函数中包含success,但是我不能这样做,因为后来我想放一个逻辑,以便我可以有data的缓冲区(至少4-5堆深)因为我希望用户在处理当前data的代码后立即获得新的data,而不是等待通过php检索data

2 个答案:

答案 0 :(得分:1)

ajax调用不会停止下一行执行,因此您必须执行以下操作:

$(function () {
var originalData=""; 
$.ajax({                                      
  url: 'data.php',                    
  data: "",                        
  dataType: 'text',               
  success: function(data)          
  {
    originalData=data;
    alert("originalData 1 "+ originalData);  
    myFunction();
  }
});

function myfunction()
{
alert("originalData 2 "+ originalData);  
...
  Processing code
...
}

});

答案 1 :(得分:1)

Ajax使用异步处理模型,一旦发送到服务器的请求,客户端将执行下一个语句,而不等待响应返回。一旦服务器响应,将根据响应的状态调用成功或失败回调。

您需要使用ajax调用中的数据在成功回调中进行所有处理。

例如:

$.ajax({
    ....
}).done(function(data) {
    //To all you post processing here
}).fail(function(){
    //Do your error handling here
});