Hi,
Mir ist im Grunde schleierhaft, wieso die Klammerung nicht greift.
Sprich das "xmlhttp.onreadystatechange" nicht komplett abgearbeitet wird (was auch immer das heißen mag).
Wird es.
Und insbesondere wie ich mir das vorstellen muss: Das onreadystatechange ist ja wie ein Event zu verstehen oder? Wie wird der Code dann abgearbeitet? Also wann das send(null) ausgeführt?
send wird zu dem Zeitpunkt ausgefuehrt, wo du es aufrufst.
Aber die Verarbeitung des synchronen Requests wird erst dann aufgerufen, wenn die Aenderung des per onchange "ueberwachten" Events eintritt - wenn sich der readyState des Requestobjektes aendert. *Asynchron* eben, wie das A in AJAX ...
Ich hätte vermutet, dass die anonyme Funktion, die bei onreadystatechange deklariert wird solange/sooft aufgerufen wird, bis keine changes mehr möglich sind - geht das überhaupt?
Ja, genau das passiert. Der readyState durchlaeuft verschiedene Stati.
Aber deine Ausgabe des Wertes am Ende wird einfach so nach dem send aufgerufen, und zu diesem Zeitpunkt steht der Wert natuerlich noch nicht zur Verfuegung, weil der Request noch gar nicht fertig ist.
onreadystatechange ist das, was beim asynchronen AJAX-Request zu "warten" auf die Abarbeitung des Requests genutzt wird.
MfG ChrisB
„This is the author's opinion, not necessarily that of Starbucks.“