我通过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
。
答案 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
});