Что означают различные readystates в XMLHttpRequest и как я могу их использовать?

StackOverflow https://stackoverflow.com/questions/632774

Вопрос

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

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

Это было полезно?

Решение

Полный список значений 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 , но это не всегда поддерживается и не следует полагаться.

Другие советы

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

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

  

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

     

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

     

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

     

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

     

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

     

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

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

Оригинальная исчерпывающая документация

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

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

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

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

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

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

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

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

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

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

статус 200: " ОК "

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top