【发布时间】:2014-08-27 09:52:13
【问题描述】:
我需要一种使用 $.ajaxSetup 全局设置某种超时功能的方法,这将允许我的 Phonegap 应用程序在每次因互联网连接不良而超时时继续重试 ajax GET 或 POST。
我使用 Backbone.js,所以大多数 jquery 插件都不能解决这个问题,我会帮助编写一段处理重试的全局代码。
谢谢。
【问题讨论】:
标签: javascript jquery ajax cordova backbone.js
我需要一种使用 $.ajaxSetup 全局设置某种超时功能的方法,这将允许我的 Phonegap 应用程序在每次因互联网连接不良而超时时继续重试 ajax GET 或 POST。
我使用 Backbone.js,所以大多数 jquery 插件都不能解决这个问题,我会帮助编写一段处理重试的全局代码。
谢谢。
【问题讨论】:
标签: javascript jquery ajax cordova backbone.js
您可以使用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一样使用函数
【讨论】:
找到了一个解决方案,可以让所有 AJAX 调用在重试超时的情况下工作。
$(document).ajaxError(function (e, xhr, options) {
if(xhr.status == 0){
setTimeout(function(){
console.log('timeout, retry');
$.ajax(options);
}, 5000);
}
});
【讨论】: