在Fail上再次自动尝试AJAX请求

Dou*_*eux 9 ajax jquery

我已经看到,如果ajax请求失败,你可以指定一般做什么,是否可以让它在某种循环中再次尝试,以便它在停止之前尝试至少x次?我之前使用过这段代码:

$.ajaxSetup({
  "error":function() {   
    alert("error");
}});
Run Code Online (Sandbox Code Playgroud)

哪个适用于所有AJAX请求(如果我错了,请纠正我).

我想做这样的事情:

$.ajaxSetup({
  "error":function() {   
    $(this).ajax;
}});
Run Code Online (Sandbox Code Playgroud)

这会有用吗?甚至更好:这是正确的方法吗?我会在计数系统中包装重试,以便它不会无限重试.在我的应用程序中,9次中有10次可以正常工作,但我偶尔会遇到一个与之相关的API将返回错误.

任何建议都会有所帮助,谢谢!

Jay*_*Jay 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>
Run Code Online (Sandbox Code Playgroud)

虽然我可能会建议反对它.如果请求失败,您可能想知道它失败的原因.如果用户丢失了互联网连接怎么办?任何进一步的尝试都可能再次失败,为什么要重试呢?

  • 你需要在`doAjaxRequest`中调用`doAjaxRequestLoop`.现在它只是将值设置为0,从不做任何事情. (2认同)