我需要在每个()完成其中的所有任务后显示一些文本。但它似乎正在运行异步和“完成”。显示得太早。我试图使用延迟,但没关系。正如您所看到的,我将成功和失败信息发送到模式以显示哪些记录已保存或失败。所有$ ajax调用完成后,'done'需要完成。任何帮助将不胜感激。
$(".QueueGrid tbody > tr").each(function () {
dcn = "";
if ($(this).find(".chkOtherSelected").prop("checked")) {
claimnum = $(this).find("td:eq(2)").text();
dcn = $(this).find("td:eq(5)").text();
$.ajax({
type: "POST",
url: "Approval_Inbox.aspx/SaveNote",
data: "{dcn:'" + dcn + "',note:'" + note + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
cache: false,
timeout: 8000,
beforeSend: function () {
str = "- " + dcn + "<br />";
},
success: function (data) {
_savedSucess += str;
},
error: function () {
_savedFail += str;
},
complete: function (data) {
$("#divMassMessage").fadeIn("fast");
$("#divMassMessage").center();
$('#MainContent_savedSucess').html(_savedSucess);
$('#MainContent_savedFail').html(_savedFail);
}
});
}
});
$(".saveComplete").html("done.");
答案 0 :(得分:0)
AJAX,但它的性质不同,是异步的。您可以强制它同步(async:false),但这会在请求期间锁定浏览器。
或者,您可以计算发出的请求数,然后每次都调用一个函数。计算完成次数以及何时与呼叫次数匹配,触发警报。
答案 1 :(得分:0)
在AJAX完成函数中,您可以检查this
是否是您正在解析的元素数组的最后一个成员,即获取{{1}中元素数量的计数数组并检查当前元素是否等于数组的长度。如果是,请写完成的消息。如果没有,还有更多要素可以循环使用。