Pregunta

Estoy haciendo una solicitud a un programa CGI utilizando AJAX. La respuesta me envía contenido largo. Mi propósito es exhibir dinámicamente el progreso de la respuesta. Para eso necesito iniciar una función en el valor de estado listo del objeto XHR para que sea 3. Pero la solicitud no parece adquirir ese número de estado. En su lugar, va directamente del estado 1 al estado 4. ¿Qué me estoy perdiendo?

¿Fue útil?

Solución

La respuesta podría ir tan rápido que simplemente no se nota en el estado 3. Especialmente si lo está ejecutando en localhost, la respuesta podría transmitirse muy rápidamente. Podría intentar establecer una alerta cuando llegue a la etapa 3 para probar si realmente está llegando. Además, creo que Internet Explorer dice que es un error acceder a la respuesta en la etapa 3, por lo que podría haber problemas de compatibilidad.

Otros consejos

Si está ejecutando en localhost, es probable que el navegador nunca tenga la oportunidad de ejecutarse entre el momento en que envía la solicitud y el momento en que recibe la respuesta ...

  1. el navegador abre la conexión, establece readyState en 1
  2. el navegador envía el paquete al proceso del servidor
  3. el proceso del servidor recibe el paquete, obtiene prioridad del programador
  4. el servidor devuelve los datos al navegador y proporciona el control de la CPU. El navegador continúa la ejecución.
  5. el navegador ve que se han recibido todos los datos, establece readyState en 4.

En pocas palabras: no cuente con entrar en " recibir " estado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top