Ajax llamada - listo confusión flujo Estado
-
10-10-2019 - |
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');
}
}
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