我有以下代码:
for (i=1;i<=pages;i++) {
$('#procout').append(Processing Page#"+i+"<br />");
$.ajax({
url: 'processor.php',
data: {storen: perpage, pagen : i},
success: function(data) {
$('#procout').append(data+"<br />");
}
});
}
我想做的是让脚本在每次循环后等待 Ajax 响应。相反,它会按照服务器响应的顺序(乱序)打印出“处理页面”行以及每次运行的 Ajax 响应。我尝试将 async 选项设置为 false,但这只会导致 JS 等待所有六个请求完成,然后一起输出所有运行的所有内容。
注意:pages、perpage 和 pagen 的值与问题无关。
最佳答案
由于您已经尝试过发出 ajax 请求 async:false
(无论如何,这很少是一个好主意),请考虑将循环体分解为发出 ajax 请求的函数,并且然后在回调中运行下一个请求:
function runRequest(num){
if (num > pages) return; //since your original was looping while i <= pages
$('#procout').append("Processing Page#" + num + "<br />");
$.ajax({
url: 'processor.php',
data: {storen: perpage, pagen : num},
success: function(data) {
$('#procout').append(data + "<br />");
runRequest(num + 1);
}
});
}
当然,然后开始该过程
runRequest(0);
关于javascript - JQuery 等待 Ajax 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9319325/