我已经看到,如果一个ajax请求失败,你可以指定一般做什么,是否可以让它在某种循环中再次尝试,以便在停止之前至少尝试x次?我以前使用过这个代码:
$.ajaxSetup({
"error":function() {
alert("error");
}});
这将适用于所有AJAX请求(如果我错了,请更正我).
我想做这样的事情:
$.ajaxSetup({
"error":function() {
$(this).ajax;
}});
这会工作吗甚至更好:这将是正确的方法吗?我会将重试包装在一个计数系统中,以便它无限期地重试.在我的应用程序中,10次中的9次会正常工作,但是现在,然后我正在连接的一个API将返回错误.
任何建议都有帮助,谢谢!
解决方法
你可以尝试这样的:
var attempts;
function doAjaxRequest() {
attempts = 0;
doAjaxRequestLoop();
}
function doAjaxRequestLoop() {
attempts += 1;
if (attempts > 10) {
alert('too many attempts.');
return;
}
$.ajax({ // do your request
error: function (error) {
doAjaxRequestLoop();
}
});
}
</script>
虽然我可能会反对它.如果请求失败,您可能想要了解为什么它失败.如果用户丢失互联网连接怎么办?任何进一步的尝试可能会再次失败,为什么要重试?