我想要做的事情涉及通过一系列复选框。每个()循环内的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