Вы правы, 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 - это "особый случай". Посмотрите здесь или здесь .
В: Ответ на ваш вопрос?