Необхідні параметри error
функції Ajax є, jqXHR, exception
і ви можете використовувати її як нижче:
$.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
Параметри
jqXHR:
Це власне об'єкт помилки, який виглядає приблизно так
Ви також можете переглянути це на своїй консолі браузера, використовуючи console.log
внутрішню error
функцію, наприклад:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
Ми використовуємо status
властивість цього об’єкта, щоб отримати код помилки, наприклад, якщо ми отримуємо статус = 404, це означає, що запитувану сторінку не вдалося знайти. Він взагалі не існує. На основі цього коду статусу ми можемо перенаправляти користувачів на сторінку входу або будь-яку необхідну для нашої бізнес-логіки інформацію.
виняток:
Це рядкова змінна, яка показує тип виключення. Отже, якщо ми отримуємо помилку 404, exception
текст буде просто «помилкою». Так само ми можемо отримати "тайм-аут", "скасувати", як і інші тексти винятків.
Застарілі Примітка:jqXHR.success()
, jqXHR.error()
і jqXHR.complete()
зворотні виклики є застарілим JQuery 1.8. Для того, щоб підготувати свій код для їх подальшого видалення, використовувати jqXHR.done()
, jqXHR.fail()
і jqXHR.always()
замість цього.
Отже, у випадку, коли ви використовуєте jQuery 1.8 або вище, нам потрібно буде оновити логіку функції успіху та помилок, наприклад: -
// 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");
});
Сподіваюся, це допомагає!
dataType
не такdatatype
.