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

Javascript 全局配置所有$.ajax请求以支持超时重试,javascript,jquery,ajax,cordova,backbone.js,Javascript,Jquery,Ajax,Cordova,Backbone.js,我需要一种使用$.ajaxSetup全局设置某种超时函数的方法,该方法允许我的Phonegap应用程序在每次由于internet连接错误而出现超时时都不断重试ajax GET或POST 我使用Backbone.js,所以大多数jquery插件都不适用于此,我将帮助编写一段全局代码,用于处理重试 谢谢。您可以使用 为将来的Ajax请求设置默认值。不建议使用它 范例 除此之外,如果您想在超时时再次执行调用,我建议您为ajax调用创建包装器,如 function myAjax(options){

我需要一种使用$.ajaxSetup全局设置某种超时函数的方法,该方法允许我的Phonegap应用程序在每次由于internet连接错误而出现超时时都不断重试ajax GET或POST

我使用Backbone.js,所以大多数jquery插件都不适用于此,我将帮助编写一段全局代码,用于处理重试

谢谢。

您可以使用

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

范例

除此之外,如果您想在超时时再次执行调用,我建议您为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

找到了一个解决方案,可以使所有ajax调用在重试超时的情况下工作

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

您好,Satpal,这是一个很好的答案,但我需要一个全局函数来处理所有的应用程序调用,这就是为什么我希望只使用$.ajaxSetup完成某种函数。可能的重复
$(document).ajaxError(function (e, xhr, options) {
    if(xhr.status == 0){
        setTimeout(function(){
            console.log('timeout, retry');
            $.ajax(options);
        }, 5000);
    }
});