#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
значения.