全局配置所有$ .ajax请求以支持超时重试

时间:2014-08-27 09:52:14

标签: javascript jquery ajax cordova backbone.js

我需要一种方法来使用$ .ajaxSetup全局设置某种超时功能,这将允许我的Phonegap应用程序在每次因互联网连接错误而导致超时时继续重试ajax GET或POST。

我使用Backbone.js,因此大多数jquery插件都不适用于此,我会帮助编写一个可以处理重试的全局代码。

谢谢。

2 个答案:

答案 0 :(得分:3)

您可以使用jQuery.ajaxSetup(options)

  

为将来的Ajax请求设置默认值。不推荐使用它。

实施例

$.ajaxSetup({
  timeout: TimeoutValue
});

除此之外,如果你想在超时时再次执行调用,我建议你为ajax调用创建包装器,如。

function myAjax(options){
    var myOptions = {
        timeout: TimeoutValue,
        error: function( jqXHR, textStatus, errorThrown) {
            //textStatus can one of these "timeout", "error", "abort", and "parsererror"
            if(textStatus === "timeout") {
                //Recall method once again
                myAjax(options)
            }
        }           
    };

    options = $.extend(true, myOptions , options);
    $.ajax(options)
}

并使用与$.ajax

类似的功能

答案 1 :(得分:1)

找到一个解决方案,使所有AJAX调用都能在重试超时时工作。

$(document).ajaxError(function (e, xhr, options) {
    if(xhr.status == 0){
        setTimeout(function(){
            console.log('timeout, retry');
            $.ajax(options);
        }, 5000);
    }
});