¿Qué significan los diferentes readystates en XMLHttpRequest y cómo puedo usarlos?
-
08-07-2019 - |
Pregunta
XMLHttpRequest
tiene 5 readyState
s, y solo uso 1 de ellos (el último, 4
).
¿Para qué son los otros y en qué aplicaciones prácticas puedo usarlos?
Solución
La lista completa de valores de readyState
es:
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)
En la práctica, casi nunca usas ninguno de ellos, excepto 4.
Algunas implementaciones XMLHttpRequest pueden permitirle ver respuestas parcialmente recibidas en responseText
cuando readyState == 3
, pero esto no es universalmente compatible y no se debe confiar en él.
Otros consejos
kieron contiene la referencia de w3schools. a quien nadie confía La respuesta de bobince proporciona un enlace, que en realidad le dice a la implementación nativa de IE,
así que aquí está la documentación original citada para comprender correctamente qué representa readystate:
El objeto XMLHttpRequest puede estar en varios estados. El atributo readyState debe devolver el estado actual, que debe ser uno de los siguientes valores:
NO ENVIADO (valor numérico 0)
El objeto ha sido construido.ABIERTO (valor numérico 1)
El método open () ha sido invocado con éxito. Durante este estado, los encabezados de solicitud se pueden establecer mediante setRequestHeader () y la solicitud se puede realizar mediante el método send ().HEADERS_RECEIVED (valor numérico 2)
Se han seguido todos los redireccionamientos (si los hay) y se han recibido todos los encabezados HTTP de la respuesta final. Varios miembros de respuesta del objeto ahora están disponibles.CARGANDO (valor numérico 3)
Se está recibiendo el cuerpo de la entidad de respuesta.HECHO (valor numérico 4)
La transferencia de datos se ha completado o algo salió mal durante la transferencia (por ejemplo, redirecciones infinitas).
Lea aquí: Explicación W3C de ReadyState
Documentación definitiva original
0
, 1
y 2
solo rastrean cuántos de los métodos necesarios para realizar una solicitud ha llamado hasta ahora.
3
le dice que la respuesta del servidor ha comenzado a llegar. Pero cuando está usando el objeto XMLHttpRequest
de una página web, no hay casi nada (*) puede hacerlo con esa información, ya que no tiene acceso a las propiedades extendidas que le permiten leer los datos parciales.
readyState 4
es el único que tiene algún significado.
(*: el único uso concebible que puedo pensar para verificar readyState 3
es que señala alguna forma de vida al final del servidor, por lo que posiblemente podría aumentar la cantidad de tiempo espere una respuesta completa cuando la reciba.
onreadystatechange Almacena una función (o el nombre de una función) que se llamará automáticamente cada vez que cambie la propiedad readyState readyState Contiene el estado de XMLHttpRequest. Cambios de 0 a 4:
0: solicitud no inicializada
1: conexión de servidor establecida
2: solicitud recibida
3: solicitud de procesamiento
4: solicitud finalizada y la respuesta está lista
estado 200: " OK "
404: Página no encontrada
- 0: se ha creado UNSENT Client. open () aún no se ha llamado.
- 1: ABIERTO open () ha sido llamado.
- 2: HEADERS_RECEIVED send () ha sido llamado, y encabezados y estado están disponibles.
- 3: CARGANDO Descargando; responseText contiene datos parciales.
- 4: HECHO La operación se ha completado.
(De https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState)