我试图捕捉/知道它何时达到200(成功)的最后一次并做了一些事情,即退出。
我怎么知道它最后一次达到200?
以下是我的代码
//主函数whihc调用save和checkstatus函数
$(function () {
$("#saveChange").click(function () {
save().complete(function (jqXHR, responseText) {
var stat = jqXHR.status;
if (stat == 200) {
console.log("inside 200");
setTimeout(function () {
checkServerStatus().complete(function (jqXHR, responseText) {
if (jqXHR.status == 200) {
console.log("inside 200");
setTimeout(function () {
checkServerStatus().complete(function (jqXHR, responseText) {
count = 0;
count++;
max = 10;
if ((count <= max) && (jqXHR.status == 200)) {
checkServerStatus();
//alert(count);
}
});
if (jqXHR.status == 500) {
// alert(" 500 setimeout inside 500 status "+jqXHR.status + responseText);
} else if (jqXHR.status == 200) {
// alert(" 200 setimeout inside 200 status "+jqXHR.status + responseText);
}
}, 9000);
} else if (jqXHR.status == 500) {
// 500 error no submission
console.log("inside 500");
//alert(" 300 setimeout inside 500 status "+jqXHR.status + responseText);
checkServerStatus();
} else {
alert("else");
}
});
}, 6000);
}
});
});
});
});
答案 0 :(得分:0)
关于重试ajax请求here的讨论很好。我建议你自己处理延期。通过这种方式,您可以随心所欲地进行虚拟延迟,解决或拒绝它,然后像往常一样进行链接。
function checkServerStatus() {
var dfd = new $.deferred();
$.ajax({
url : 'ajaxurl.json',
tryCount : 0,
retryLimit : 3,
success : function(json) {
dfd.resolve();
},
error : function(xhr, textStatus, errorThrown ) {
if (this.tryCount++ <= this.retryLimit) {
//try again
$.ajax(this);
return;
}
dfd.reject();
}
});
return dfd;
}
checkServerStatus().then(function() {
// success!
}, function() {
// reached retry limit :(
});