O que as diferentes readystates em XMLHttpRequest significa e como posso usá-los?
-
08-07-2019 - |
Pergunta
XMLHttpRequest
tem 5 readyState
s, e eu só uso um deles (o último, 4
).
Quais são os outros, eo que aplicações práticas eu posso usá-los em?
Solução
A lista completa de valores 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
(de https://www.w3schools.com/js/js_ajax_http_response.asp)
Na prática, você quase nunca usar qualquer um deles, exceto para 4.
Alguns XMLHttpRequest implementações podem deixá-lo ver as respostas parcialmente recebidos em responseText
quando readyState==3
, mas isso não é universalmente suportado e não deve ser invocado.
Outras dicas
kieron 's resposta contém w3schools ref. a que ninguém contar, bobince 's resposta dá link, que na verdade diz implementação nativa do IE,
então aqui está a documentação original citado para entender corretamente o que readystate representa:
O objeto XMLHttpRequest pode estar em vários estados. O atributo readyState deve retornar o estado atual, que deve ser um dos seguintes valores:
Não enviado (valor numérico 0)
O objeto foi construído.ABERTO (valor numérico 1)
O método open () tiver sido chamado com êxito. Durante este cabeçalhos de pedido de estado pode ser definido usando setRequestHeader () e o pedido pode ser feito usando o método send ().HEADERS_RECEIVED (valor numérico 2)
Todos os redireccionamentos (se houver) foram seguidos e todos os cabeçalhos HTTP de resposta final ter sido recebido. Vários membros de resposta do objeto estão agora disponíveis.CARGA (valor numérico 3)
O corpo entidade resposta está sendo recebido.FEITO (valor numérico 4)
A transferência de dados foi concluída ou algo deu errado durante a transferência (por exemplo infinita redirecionamentos).
Por favor, leia aqui: W3C explicação sobre ReadyState
documentação definitiva Original
0
, 1
e 2
única acompanhar como muitos dos métodos necessários para fazer um pedido que você chamou até agora.
3
diz que a resposta do servidor começou a entrar. Mas quando você está usando o objeto XMLHttpRequest
partir de uma página web não há quase nada (*), você pode fazer com essa informação, desde que você não tem acesso a as propriedades estendidas que permitem ler os dados parciais.
readyState 4
é a única que detém qualquer significado.
(*: sobre o uso somente concebível que eu posso pensar para verificação de readyState 3
é que ele sinaliza alguma forma de vida no final do servidor, de modo que você poderia aumentar a quantidade de tempo que você esperar por uma resposta completa quando você recebê-lo.)
onreadystatechange Stores uma função (ou o nome de uma função) a ser chamado automaticamente cada vez que as alterações de propriedade readyState readyState detém o status do XMLHttpRequest. Alterações de 0 a 4:
0: pedido não inicializado
1: conexão do servidor estabelecida
2: pedido recebido
3: solicitação de processamento
4: pedido terminou ea resposta está pronto
estado 200: "OK"
404: Página não encontrada
- 0: não enviadas cliente foi criado. open () não é chamado ainda.
- 1:. ABERTA open () foi chamado
- 2: send HEADERS_RECEIVED () foi chamado, e os cabeçalhos e status estão disponíveis.
- 3: Baixando carregamento; responseText contém dados parcial.
- . 4: FEITO A operação está completa ??li>
(De https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState)