Что означают различные состояния чтения в XMLHttpRequest и как их использовать? - PullRequest
112 голосов
/ 11 марта 2009

XMLHttpRequest имеет 5 readyState с, и я использую только 1 из них (последний, 4).

Для чего нужны другие и в каких практических приложениях я могу их использовать?

Ответы [ 5 ]

171 голосов
/ 11 марта 2009

Полный список readyState значений:

State  Description
0      The request is not initialized
1      The request has been set up
2      The request has been sent
3      The request is in process
4      The request is complete

(из https://www.w3schools.com/js/js_ajax_http_response.asp)

На практике вы почти никогда не используете ни одного из них, кроме 4.

Некоторые реализации XMLHttpRequest могут позволить вам увидеть частично полученные ответы в responseText, когда readyState==3, но это не поддерживается повсеместно и на них не следует полагаться.

31 голосов
/ 17 апреля 2014

kieron ответ содержит w3schools ref. на который никто не полагается, bobince ответ дает ссылку, которая фактически говорит нативную реализацию IE,

так вот оригинальная документация, приведенная для правильного понимания, что представляет собой readystate:

Объект XMLHttpRequest может находиться в нескольких состояниях. Атрибут readyState должен возвращать текущее состояние, которое должно быть одним из следующих значений:

UNSENT (числовое значение 0)
Объект был построен.

ОТКРЫТО (числовое значение 1)
Метод open () был успешно вызван. Во время этого состояния заголовки запроса могут быть установлены с помощью setRequestHeader (), а запрос может быть выполнен с помощью метода send ().

HEADERS_RECEIVED (числовое значение 2)
Все перенаправления (если таковые имеются) были выполнены, и все заголовки HTTP окончательного ответа были получены. Доступно несколько ответных членов объекта.

ЗАГРУЗКА (числовое значение 3)
Тело объекта ответа принимается.

DONE (числовое значение 4)
Передача данных была завершена или что-то пошло не так во время передачи (например, бесконечные перенаправления).

Пожалуйста, прочтите здесь: W3C Объяснение ReadyState

22 голосов
/ 11 марта 2009

Оригинальная окончательная документация

0, 1 и 2 только отслеживают, сколько из необходимых методов для выполнения запроса вы уже вызвали.

3 говорит вам, что ответ сервера начал поступать. Но когда вы используете объект XMLHttpRequest с веб-страницы, вы почти ничего не можете (*) сделать с этой информацией, поскольку вы не у него нет доступа к расширенным свойствам, которые позволяют вам читать частичные данные.

readyState 4 - единственный, который имеет какое-либо значение.

(*: о единственно возможном использовании, которое я могу придумать для проверки readyState 3, является то, что он сигнализирует о некоторой форме жизни на стороне сервера, так что вы можете увеличить время ожидания полного ответа когда вы его получите.)

1 голос
/ 06 августа 2015

onreadystatechange Сохраняет функцию (или имя функции), которая будет вызываться автоматически при каждом изменении свойства readyState. readyState Содержит состояние XMLHttpRequest. Изменения от 0 до 4:

0: запрос не инициализирован

1: соединение с сервером установлено

2: запрос получен

3: обработка запроса

4: запрос завершен и ответ готов

статус 200: «ОК»

404: страница не найдена

0 голосов
/ 09 января 2018
  • 0: НЕПРАВИЛЬНЫЙ клиент создан. open () пока не вызывается.
  • 1: OPENED open () вызван.
  • 2: HEADERS_RECEIVED send () вызван, заголовки и статус доступны.
  • 3: ЗАГРУЗКА Загрузка; responseText содержит частичные данные.
  • 4: ГОТОВО Операция завершена.

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState)

...