我已经看到,如果ajax请求失败,你可以指定一般做什么,是否可以让它在某种循环中再次尝试,以便它在停止之前尝试至少x次?我之前使用过这段代码:
$.ajaxSetup({
"error":function() {
alert("error");
}});
哪个适用于所有AJAX请求(如果我错了,请纠正我)。
我想做这样的事情:
$.ajaxSetup({
"error":function() {
$(this).ajax;
}});
这会有用吗?甚至更好:这是正确的方法吗?我会在计数系统中包装重试,以便它不会无限重试。在我的应用程序中,9次中有10次可以正常工作,但是我不时地连接其中一个API会返回错误。
任何建议都会有所帮助,谢谢!
答案 0 :(得分:13)
您可以尝试这样的事情:
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>
虽然我可能会建议反对它。如果请求失败,您可能想知道它失败的原因。如果用户丢失了互联网连接怎么办?任何进一步的尝试都可能再次失败,为什么要重试呢?