【发布时间】:2023-03-17 16:25:02
【问题描述】:
在我的each() 完成其中的所有任务后,我需要显示一些文本。但似乎他们正在异步运行并且“完成”。显示得太早。我曾尝试使用延迟,但这没关系。如您所见,我将成功和失败信息发送到一个模式,以显示哪些记录已保存或失败。在所有$.ajax 调用完成后,需要“完成”。
$(".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.");
【问题讨论】:
-
您可能应该重新考虑您的方法并在一个 ajax 请求中完成整个事情,循环 ajax 请求通常是一个坏主意,除非您 100% 确定这是行为并且唯一的解决方案您的需求。
标签: javascript jquery ajax each