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

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

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

谢谢。

您可以使用jQuery.ajaxSetup(选项) 。

为将来的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

找到一个解决方案,使所有AJAX调用都可以使用重试超时。

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