2010-12-16 2 views
1

Ich entwickelte mit Ajax Anruf und während des Debuggens, fand ich Ajax sendet Anfrage/Antwort so viel Zeit, als ich mir eigentlich vorgestellt.Ajax Anruf - bereit Statusfluss Verwirrung

Vor langer Zeit bekam ich ein gutes Dokument, das beschreibt, was hinter der Szene passiert, aber ich habe es verloren.

Heutzutage spricht Ajax-Tutorials im Web nur noch über das Codieren und die IF-Statement-Checks readystate == 4 und status == 200, die keine gute Erklärung für jemanden wie mich bieten.

Ich testete den Fluss mit Code unten und Ausgabe ist ich denke, seltsam. Meine Verwirrung ist, warum bereit 4 Zustand zweimal auftaucht? Gemäß der Definition bereit 4 bedeutet abgeschlossen so sollte es keinen Grund geben, zweimal zu vervollständigen?

OUTPUT

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 CODE Snippet

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'); 
       } 
    }     

Antwort

4

Sie in quirksmode über die Art und Weise mit AJAX Anrufe und Readystate verschiedenen Browsern verhalten lesen kann.

Ich fand this Link, der mit dem Abort Befehl wird eine readystate 4 ausgeben (habe es nicht getestet) - verwenden Sie Abort?

+0

Danke für den Tipp, nein, ich glaube nicht, dass ich abbrechen. obwohl ich mehr über Ajax-Verhalten suchen muss –