Принимает ли функция успеха jquery код состояния 200? - PullRequest
3 голосов
/ 21 октября 2019

В функции успеха ajax предполагается, что код состояния равен 200? или он может быть успешным, если вы вернете 304 или 503?

Что на самом деле определяет его успешность?

1 Ответ

2 голосов
/ 21 октября 2019

Вы правы, jQuery ajax "потерпит неудачу", если он получит HTTP 503 ... или 500, или 404, и т. Д. Он также (очевидно) завершится с ошибкой при ECONNREFUSED или любой ошибке на уровне сокета (связи).

Вот документация:

https://api.jquery.com/jquery.ajax/

jQuery.ajax () : выполнить асинхронный запрос HTTP (Ajax).

jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});

Альтернативная конструкция для опции обратного вызова с ошибкой, метод .fail () заменяет устаревший метод .error (). Обратитесь к deferred.fail () за подробностями реализации.

https://api.jquery.com/deferred.fail/

deferred.fail () : добавление обработчиков, которые будут вызываться при отклонении отложенного объекта.

Стоит отметить, что соединение может быть успешным ... сервер может вернуть HTTP 200 / OK ... и ваш вызов jQuery Ajax может STILL вызвать "сбой".

Например, если вы ожидаете ответа JSON, а сервер возвращает XML:

https://www.mkyong.com/jquery/jquery-ajax-request-return-200-ok-but-error-event-is-fired/

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

  • Чтобы ответить на ваш первоначальный вопрос: Да, «успех» обычно подразумевает HTTP 200.

  • Но многие другие вещи, кроме не HTTP 200, могут вызвать «сбой»».

  • Вы можете даже иметь HTTP 200 и все еще "терпеть неудачу" (по ссылке выше).

  • Или иметь не HTTP 200и по-прежнему "успешно" (например, HTTP 201 ).

  • HTTP 304 - это "особый случай". Посмотрите здесь или здесь .

В: Ответ на ваш вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...