我正在编写一个小脚本,通过循环调用各个AJAX,我遇到了一个很可能很明显的问题。似乎循环将快速处理用ajax接收的数据,导致它只加载循环中的最后一段数据。我添加了一个警报框,它可以逐步完成迭代并加载数据,但在用户环境中却不实用。代码只是一个jquery .post(),在for循环中有一个回调。我可以根据要求发布代码,但我觉得这可以通过口头清除。任何人都知道一种变通方法或更好的方法来顺序加载数据?感谢。
修改
.ajaxSetup()
会修改.post()
吗?也许我可以用它来改变.post()的异步值。
答案 0 :(得分:5)
你需要强制你的ajax调用与我的朋友同步;)
http://api.jquery.com/jQuery.ajax/
例如:
<强> asyncBoolean 强> 默认值:true
默认情况下,所有请求都是异步发送的(即默认情况下设置为true)。如果需要同步请求,请将此选项设置为 false 。跨域请求和dataType:“jsonp”请求不支持同步操作。请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作。
答案 1 :(得分:4)
我实际上发现添加这个代码段是有效的,所以我没有必要将.post()更改为.ajax()
$.ajaxSetup({
async: false
});
我不确定它是否也会改变我的其他ajax调用的设置
答案 2 :(得分:0)
如果使用async: false
,您应该能够将每个ajax调用放入队列,直到它们以同步方法执行。像这样:
for( var i=0;i < x;i++ ){
$.ajax({url: 'myurl',
async: false,
success: function(data){
//do something with the returned 'data'
};
});
}
答案 3 :(得分:0)
function myFunction() {
var x;
for(var i=0;i<10;i++){
if (confirm("Press a button!") == true) {
x = "You pressed OK!";
} else {
x = "You pressed Cancel!";
}
document.getElementById("demo").innerHTML = x;
}
}
enter code here