2013-07-10 8 views
24
xmlhttp.onreadystatechange = function() 
{ 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 
    { 
     document.getElementById("myDiv").innerHTML = xmlhttp.responseText; 
    } 
} 

Der obige Code stammt aus: http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp.readyState vs. Status == 200

Frage:

Nach diesem Tutorial:

readyState: 4: request finished and response is ready 

status: 200: "OK" 

When readyState is 4 and status is 200, the response is ready: 

seit wann xmlhttp.readyState == 4, Antwort bereit ist, warum wir immer noch xmlhttp.status == 200 brauchen? Was ist der Unterschied zwischen xmlhttp.readyState == 4 und xmlhttp.status == 200?

Antwort

25

Der Status der Antwort, xhr.status, wird (allgemein) verwendet, um festzustellen, ob die Anforderung erfolgreich war oder nicht. xhr.readyState wird einfach verwendet, um den Status der Anfrage zu bestimmen, wie "noch nicht gesendet" (0), "abgeschlossen und Antwort erhalten" (4), etc.

Der Server ist verantwortlich für die Bereitstellung der status, während der Benutzeragent die readyState bereitstellt.

+0

genau was ich brauchte! –

1

Sie haben einen Fehler auf Ihrem Server-Seitencode. Sie fordern die Seite an, und readyState ist 4, wenn der Server die Antwort beendet hat, der Statuscode jedoch 500 (oder 500) lautet.

0

Die readyState bezieht sich auf die Antwort der Anfrage - es ist 4, wenn Sie die Antwort abgerufen haben und es etwas zu sehen gibt. Der tatsächliche Wert ist immer noch nicht bekannt, also müssen Sie die status überprüfen, die zurückgegeben wurde.

14

Status zeigt an, ob die Serverantwort in Ordnung ist.
Im allgemeinen Worten, wenn Sie einen Status bekommen

500 - 599: der Server

400 hatte einen Fehler - 499: dies ist ein Client-Fehler (zB: 404 Seite nicht gefunden

)

300 - 399: existiert dann eine Umleitung

200 - 299: dann ist es richtig und

100 - 199: bedeutet Informationsmeldung

Dann wurden 200 der Status == wird eine Meldung bekommen, wo der Server sagt: 'Hey Mann, den ich die Arbeit machen!'

+0

danke es hat wirklich geholfen –

+0

'Hey Mann, ich mache die Arbeit!' hehehe wie diese Erklärung – samer

14

meine Analogie. Ein Krankenwagen einen Patienten trägt zu einem hospital.In dieses Szenario Familie (Client) und Krankenhaus (Server) wird benötigt Spur von zwei Dingen zu halten

  • Ambulance Krankenhaus erfolgreich erreicht (readyState)
  • Health Updates des Patienten während dieses Prozesses.(status)

Wenn readyState === 4 und status === 200 bedeutet alles ist die gleiche Art und Weise Ajax-Aufruf funktioniert right.In.

+0

danke es hat wirklich geholfen –

9

readyState Enthält den Status von XMLHttpRequest. Änderungen von 0 bis 4:

0: Anfrage nicht initialisiert

1: Server-Verbindung hergestellt

2: Anforderung empfing

3: Verarbeitungsanforderung

4: fordern fertige und die Antwort ist bereit Status 200: "OK" 404: Seite nicht gefunden

+0

danke es hat wirklich geholfen –

0

onreadystatechange = function() wird nur ausgeführt, wenn wir die Antwort vom Server erhalten. Wenn wir eine Antwort vom Server bekommen, bedeutet das, dass unsere Anfrage beendet ist, was durch 4 angezeigt wird. Und 200 sagt uns seinen korrekten Status. "4: Anfrage beendet und Antwort ist bereit Status 200" Wir erhalten den Status 404, wenn die Seite nicht gefunden wird.

Verwandte Themen