我想要做的事情涉及通過一系列複選框。每個()循環內的Ajax調用不是異步的
對於它們中的每一個它被檢查,我必須執行一些計算(使用ajax調用)。如果出現錯誤,我必須打破循環並返回消息。
每個ajax調用都需要大約0.4秒的時間才能完成,但這永遠不會成爲問題,因爲在任何給定時間只能檢查其中最多4個。
但是我面臨的問題是,最後的警告框彈出之前,錯誤函數()內的一個。錯誤函數確實有效,但總是在最後一個之後出現。
我的印象是,通過將調用定義爲異步= false,代碼執行將等待直到調用返回響應。這是一個錯誤的假設?
有沒有辦法做到這一點?
在此先感謝
$("input[id*='chk_aut']").each(function() {
if(this.value=="on") {
$.ajax({
type: "GET",
url: "testpage.asp",
cache:"false",
async:"false",
data: "which=checkvalues&value="
+ i_value
+ "&ref="+$("#cb_ref").val()
+ "&nif="+$("#txt_nif").val()
+ "&day="+i_day
+ "&month="+i_month
+ "&hours="+i_hours
+ "&year="+i_year + "&ms="
+ new Date().getTime(),
success: function(msg) {
//do something but continue the loop
},
error: function() {
i_result =false;
alert("An error has occurred");
return false;//break the loop
}
});
}
});
alert(i_result);
我將嘗試按照您描述的方式使用async參數。我有這種情況的替代代碼(不使用async:false),但我很好奇它爲什麼不按預期的方式工作。 – 2009-11-10 15:09:01
已經嘗試使用布爾值但無濟於事。 仍然有相同的結果。 – 2009-11-11 10:34:28
將您的建議應用於緩存參數,並且所有內容均按預期工作。感謝您花時間回答這個問題。 – 2009-11-11 14:25:34