Avec la méthode "abort"
Exemple. Code JS :
var jqXHR = $.getJSON( "test.json" );
setTimeout( function(){
// Si l'objet différé existe dans l'état "attendre",
// alors exécute la méthode fail()
if ( jqXHR && jqXHR.state() === "pending" ){
jqXHR.abort();
}
}, 3000 ); // 3s
jqXHR.done( function( data, textStatus, jqXHR ){
// succès de la transaction, on doit traiter le contenu de data
console.log( data, textStatus, jqXHR );
});
jqXHR.fail( function( jqXHR, textStatus, errorThrown ){
// échec de la transaction, gérer la catastrophe
console.log( jqXHR, textStatus, errorThrown );
});
jqXHR.always( function( jqXHR, textStatus ){
// la transaction est terminée
console.log( jqXHR, textStatus );
});
Il y a une option "timeOut", mais elle ne fonctionne pas à 100% pour "script", "json" ou "jsonp".
Exemple. Code JS :
$.ajaxSetup( { "timeout" : 3000 } ); // 3s
var jqXHR = $.getJSON( "test.json" );
jqXHR.done( function( data, textStatus, jqXHR ){
// succès de la transaction, on doit traiter le contenu de data
console.log( data, textStatus, jqXHR );
});
jqXHR.fail( function( jqXHR, textStatus, errorThrown ){
// échec de la transaction, gérer la catastrophe
console.log( jqXHR, textStatus, errorThrown );
});
jqXHR.always( function( jqXHR, textStatus ){
// la transaction est terminée
console.log( jqXHR, textStatus );
});