Обязательные параметры в функции 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);
},
});
DEMO FIDDLE
Параметры
jqXHR:
На самом деле это объект ошибки, который выглядит следующим образом
Вы также можете просмотреть это в собственной консоли браузера, используя console.log
внутри функции error
, например:
error: function (jqXHR, exception) {
console.log(jqXHR);
// Your error handling logic here..
}
Мы используем свойство status
из этого объекта, чтобы получить код ошибки, например, если мы получим status = 404, это означает, что запрашиваемая страница не может быть найдена.Это не существует вообще.На основе этого кода состояния мы можем перенаправлять пользователей на страницу входа или в соответствии с требованиями нашей бизнес-логики.
исключение:
Это строковая переменная, которая показывает тип исключения.Итак, если мы получим ошибку 404, текст exception
будет просто «ошибкой».Точно так же мы можем получить 'timeout', 'abort' как другие тексты исключений.
Примечание об устаревании: 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");
});
Надеюсь, это поможет!