Как обрабатывать ошибки ajax, которые не были обработаны StatusCode?

#javascript #jquery #ajax #http #error-handling

#javascript #jquery #ajax #http #обработка ошибок

Вопрос:

Я выполняю следующий вызов ajax:

 $.ajax({
    type: type,
    url: url,
    data: data,
    success: successCallback,
    error: defaultFailureCallback,
    dataType: 'json',
    statusCode: statusCode
});
  

Я передаю несколько кодов состояния HTTP в statusCode параметр, и соответствующие ошибки обрабатываются соответствующими функциями. Теперь я хочу, чтобы defaultFailureCallback функция обрабатывала все остальные коды ошибок. Как мне это сделать?

Сигнатура функции ошибки в jQuery является: error(jqXHR, textStatus, errorThrown)

Проблема, с которой я сталкиваюсь, заключается в том, что нет способа получить доступ к фактическому statusCode параметру внутри defaultFailureCallback функции. jqXHR похоже, что он не содержит этой информации. (Я могу получить текущий статус от jqXHR.status )

Комментарии:

1. эта ссылка может помочь вам: cupcakewithsprinkles.com /…

Ответ №1:

jqXHR должно иметь свойство status , смотрите: http://api.jquery.com/jQuery.ajax/#jqXHR

Комментарии:

1. Да, но как мне узнать, было ли это обработано какой-либо другой функцией в StatusCode? Например, я хотел бы сделать что-то вроде if(xhr.statusCode[xhr.status] == undefined){doSomething}

2. Понятно. Допустим, вы передаете объект statusCodes в настройки ajax. Вы могли бы сделать что-то вроде этого: if( typeof statusCodes[xhr.status] == 'undefined' ) // no handler function... .

Ответ №2:

Решение заключается в использовании this переменной, которая также будет содержать statusCode значения.