-1

我正在通过 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
    ...
});

警报的顺序是:

第一个:“原始数据 2”

第二:“原始数据1”

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

4

2 回答 2

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
...
}

});

于 2013-02-27T06:35:04.620 回答
1

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

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

前任:

$.ajax({
    ....
}).done(function(data) {
    //To all you post processing here
}).fail(function(){
    //Do your error handling here
});
于 2013-02-27T06:38:06.030 回答