JQuery поймать любую ошибку ajax

Мне нравится ловить любое исключение ajax 401 Unauthorised, но мне не нравится изменять все мои запросы ajax. Есть ли способ изменить его для любого вызова $.ajax типа (перезаписать любой обработчик error)?

Ответы

Ответ 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.