Мне нравится ловить любое исключение ajax 401 Unauthorised
, но мне не нравится изменять все мои запросы ajax. Есть ли способ изменить его для любого вызова $.ajax типа (перезаписать любой обработчик error
)?
JQuery поймать любую ошибку ajax
Ответ 1
вы можете использовать глобальные обработчики событий ajax . ajaxError()
$( document ).ajaxError(function( event, jqxhr, settings, exception ) {
if ( jqxhr.status== 401 ) {
$( "div.log" ).text( "Triggered ajaxError handler." );
}
});
Ответ 2
Вы можете сделать что-то вроде этого:
$(function() {
$.ajaxSetup({
error: function(jqXHR, exception) {
if (jqXHR.status === 401) {
alert('HTTP Error 401 Unauthorized.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
});
Это приведет к ошибке в любом из ваших вызовов ajax
.
Ответ 3
Функция $.ajaxSetup()
позволит вам указать глобальные параметры для вызовов Ajax. Однако будьте осторожны, так как другие вызовы ajaxSetup()
будут перезаписывать глобальные параметры, а указанные локальные параметры для метода ajax()
переопределяют глобальные настройки.
Ответ 4
Чтобы поймать код состояния 401
, просто добавьте
$.ajaxSetup({
statusCode: {
401: function(err){
console.log('Login Failed.', err.responseJSON);
// or whatever...
}
}
});
на вашей странице где-то перед вызовом AJAX.
Ответ 5
Попробуйте использовать .ajaxError()
как глобальный метод http://api.jquery.com/ajaxError/