Globally configure all $.ajax requests to support retry on timeout
我需要一种方法来使用$ .ajaxSetup全局设置某种超时功能,这将允许我的Phonegap应用程序在每次因互联网连接错误而导致超时时继续重试ajax GET或POST。
我使用Backbone.js所以大多数jquery插件都不适用于此,我会帮助编写一个将处理重试的全局代码。
谢谢。
您可以使用jQuery.ajaxSetup(选项)。
Set default values for future Ajax requests. Its use is not recommended.
例
1 2 3 | $.ajaxSetup({ timeout: TimeoutValue }); |
除此之外如果你想在超时时再次执行调用,我建议你为ajax调用创建包装器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 2 3 4 5 6 7 8 | $(document).ajaxError(function (e, xhr, options) { if(xhr.status == 0){ setTimeout(function(){ console.log('timeout, retry'); $.ajax(options); }, 5000); } }); |