我需要一种方法来使用$ .ajaxSetup全局设置某种超时功能,这将允许我的Phonegap应用程序在每次因互联网连接错误而导致超时时继续重试ajax GET或POST。
我使用Backbone.js,因此大多数jquery插件都不适用于此,我会帮助编写一个可以处理重试的全局代码。
谢谢。
答案 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);
}
});