Ответ 1
Необходимыми параметрами в функции Ajax error
являются 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);
},
});
Параметры
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");
});
Надеюсь, что это поможет!