Les paramètres requis dans une requête Ajax error
fonction sont jqXHR, exception
et vous pouvez l'utiliser comme ci-dessous :
$.ajax({
url: 'some_unknown_page.html',
success: function (response) {
$('#post').html(response.responseText);
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
},
});
DEMO FIDDLE
Paramètres
jqXHR :
Il s'agit en fait d'un objet d'erreur qui ressemble à ceci
Vous pouvez également le visualiser dans la console de votre propre navigateur, en utilisant console.log
à l'intérieur de la error
comme une fonction :
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
Nous utilisons le status
de cet objet pour obtenir le code d'erreur, par exemple si nous obtenons status = 404 cela signifie que la page demandée n'a pas pu être trouvée. Elle n'existe pas du tout. Sur la base de ce code d'état, nous pouvons rediriger les utilisateurs vers la page de connexion ou tout ce que notre logique commerciale exige.
exception :
Il s'agit d'une variable de type chaîne qui indique le type d'exception. Donc, si nous obtenons l'erreur 404, exception
le texte serait simplement "erreur". De même, nous pourrions obtenir 'timeout', 'abort' comme autres textes d'exception.
Avis de dépréciation : Le site jqXHR.success()
, jqXHR.error()
y jqXHR.complete()
sont obsolètes depuis la version 1.8 de jQuery. Pour préparer votre code pour leur suppression éventuelle, utilisez jqXHR.done()
, jqXHR.fail()
, et jqXHR.always()
à la place.
Donc, si vous utilisez jQuery 1.8 ou supérieur nous devrons mettre à jour la logique des fonctions de succès et d'erreur comme:-
// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax("some_unknown_page.html")
.done(function (response) {
// success logic here
$('#post').html(response.responseText);
})
.fail(function (jqXHR, exception) {
// Our error logic here
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#post').html(msg);
})
.always(function () {
alert("complete");
});
J'espère que cela vous aidera !
0 votes
Il y a une erreur de frappe : c'est
dataType
pasdatatype
.0 votes
Aussi, jQuery dit que vous ne pouvez pas utiliser à la fois le succès et l'erreur comme vous l'avez fait.
7 votes
@alej27 : la formulation est un peu bizarre, mais il n'est pas dit que vous ne pouvez pas les utiliser tous les deux, il est dit qu'une requête ne pourra pas appeler success et error (parce qu'ils sont mutuellement exclusifs).
0 votes
Soyez prudent avec les réponses ici A partir de jQuery 3.0, la mention dépréciée sur
.error
y.success
deviennent plus importants au fur et à mesure qu'ils sont retirés.