AJAX-等到响应再进行下一次AJAX调用之前
我做了一个函数,它循环遍历每个div标签,class =“health_report”,对于每个div,它都进行AJAX调用。唯一的问题是它使得50个AJAX调用(假设我有50个DIV标签)立即生效。这样可以,但为了我的目的,我需要等到第一个AJAX调用完成(成功功能被触发)后才能移动到下一个DIV标签。继承人的代码:AJAX-等到响应再进行下一次AJAX调用之前
$('.health_report').each(function(i, obj) {
// FIRST AJAX CALL
generateHealthReport();
});
function generateHealthReport(fileID,filter,slug,reportID,importance,reputation) {
$.ajax({
type: "POST",
url: ajaxurl,
data: {
"action": 'generateHealthReport'
},
dataType: "html",
success: function (returnData) {
// do something
}
});
}
因此,一些我想这应该工作是增加一个定时器循环
我怎样才能使它如此循环(使用jQuery的叫计时http://creativecouple.github.io/jquery-timing/)
所以代码变成了这样:
$('.health_report').each($).wait(3000,function(i, obj) {
// FIRST AJAX CALL
generateHealthReport();
});
循环现在暂停迭代3之间秒,这给人的第一AJAX调用一次循环移动到NE前完成xt DIV标签。这使得AJAX调用以我需要的方式发生,但由于某种原因它出现了问题,有时候返回的HTML响应只是应该返回的HTML的一部分。有没有另一种方法来做到这一点?我如何让循环暂停,直到它完成的AJAX调用完成?
您可以使用ajaxComplete或选项从ajax完整:
$.ajax({
type: "POST",
url: ajaxurl,
data: {
"action": 'generateHealthReport'
},
dataType: "html",
success: function (returnData) {
// do something
}
complete: function() {
// This is called after completion of Ajax.
// nextAjax();
}
});
.each循环在移动到下一次迭代之前是否会等待完整的函数? –
你不能在Javascript中等待。完成后您必须调用下一个Ajax。 – lilezek
异步设置为false。 http://stackoverflow.com/questions/6685249/jquery-performing-synchronous-ajax-requests,这样在提交另一个之前,它会简单地等待。 – Hozikimaru