Pregunta

que estaba desarrollando mediante una llamada Ajax y durante la depuración, me encontré con el Ajax es el envío de petición / respuesta de tantos tiempo de lo que en realidad imaginaba.

Hace mucho tiempo que tengo buen documento que describe lo que está sucediendo detrás de la escena, pero lo perdí.

Hoy en día tutoriales Ajax en la web sólo se habla de la forma de código y los IF sólo comprueba readystate == 4 y status == 200 que no proporciona una buena explicación para alguien como yo.

He probado el flujo con código de abajo y la salida es que creo que extraño. Mi confusión es la razón por 4 listos Estado está apareciendo dos veces? De acuerdo con la definición, listas 4 mediante completado por lo que no debería haber ninguna razón para completar el doble?

SALIDA

START
ready 1                //loading
START
ready 2                //loaded
ready 2 status=200     //loaded
START
ready 3                //interactive
ready 3 status=200     //interactive
START
ready 4                //complete
START
ready 4                //complete   ... again???

TEST fragmento de código

xmlHttp.onreadystatechange = function() {

                alert("START");

                if(xmlHttp.readyState == 0) {
                    alert('ready 0');
                    alert('ready 0 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 1) {
                    alert('ready 1');
                    alert('ready 1 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 2) {
                    alert('ready 2');
                    alert('ready 2 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 3) {
                    alert('ready 3');
                    alert('ready 3 status=' + xmlHttp.status);
                }

                if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                    alert('ready 4');
                } 
   }                 
¿Fue útil?

Solución

Se puede leer en quirksmode sobre la forma en que los diferentes navegadores comportarse con llamadas AJAX y readyState.

este enlace que las reclamaciones utilizando el comando Abort emitirá un readystate 4 (no lo he probado) - está usando Abort

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