Le Pseudo-code:
$(document).ajaxError(function(e, xhr, options, error) {
xhr.retry()
})
Encore mieux serait une sorte de l'algorithme de reprise
Le Pseudo-code:
$(document).ajaxError(function(e, xhr, options, error) {
xhr.retry()
})
Encore mieux serait une sorte de l'algorithme de reprise
Quelque chose comme ceci:
$.ajax({
url : 'someurl',
type : 'POST',
data : ....,
tryCount : 0,
retryLimit : 3,
success : function(json) {
//do something
},
error : function(xhr, textStatus, errorThrown ) {
if (textStatus == 'timeout') {
this.tryCount++;
if (this.tryCount <= this.retryLimit) {
//try again
$.ajax(this);
return;
}
return;
}
if (xhr.status == 500) {
//handle error
} else {
//handle error
}
}
});
J'ai eu beaucoup de succès avec ce code ci-dessous (exemple: http://jsfiddle.net/uZSFK/)
$.ajaxSetup({
timeout: 3000,
retryAfter:7000
});
function func( param ){
$.ajax( 'http://www.example.com/' )
.success( function() {
console.log( 'Ajax request worked' );
})
.error(function() {
console.log( 'Ajax request failed...' );
setTimeout ( function(){ func( param ) }, $.ajaxSetup().retryAfter );
});
}
Voici un petit plugin pour cela:
https://github.com/execjosh/jquery-ajax-retry
Auto-incrémentation de délai d'attente serait un bon ajout.
Pour l'utiliser à l'échelle mondiale tout simplement créer votre propre fonction $.ajax signature, il y réessayer api et le remplacement de vos dollars.les appels ajax par votre nouvelle fonction.
Vous pouvez également remplacer directement $.ajax, mais vous ne serez pas en mesure de faire xhr des appels sans réessayer ensuite.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.