Подтвердить что ты не робот

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

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

4b9b3361

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