我需要在我的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%確定這是行爲和唯一解決方案來解決您的需求。 – 2012-08-07 20:17:34