Reputation: 3975
I need a way to set some kind of timeout function globally with $.ajaxSetup that will allow my Phonegap application to keep retrying an ajax GET or POST every time there is a timeout due to a bad internet connection.
I use Backbone.js so most jquery plugins won't work for this, I would some help writing one global piece of code which will handle retries.
Thank you.
Upvotes: 1
Views: 1585
Reputation: 3975
Found a solution to make all AJAX calls work with a retry timeout.
$(document).ajaxError(function (e, xhr, options) {
if(xhr.status == 0){
setTimeout(function(){
console.log('timeout, retry');
$.ajax(options);
}, 5000);
}
});
Upvotes: 1
Reputation: 133453
You can use jQuery.ajaxSetup(options).
Set default values for future Ajax requests. Its use is not recommended.
Example
$.ajaxSetup({
timeout: TimeoutValue
});
Apart from that if you want perform call again on timeout, I will suggest you to create wrapper for ajax call like.
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)
}
And Use the function just like $.ajax
Upvotes: 4