Der Max: xmlHttpRequest.open - Verständnisfrage

Beitrag lesen

Lieber wahsaga,

Das darfst du wohl nicht so wörtlich nehmen.

Ab dem Zeitpunkt, wo du die Handler-Funktion definierst, springt sie bei einer Änderung des Status auch an.

ja, genauso ist es. Ich bin endlich auf eine vernünftige Erläuterung gestossen:

http://ajaxpatterns.org/XMLHttpRequest_Call

"The XMLHttpRequest's readyState always reflects the current point in the call's lifecycle. When the object is born, it's at 0. After open() has been called, it's 1. This continues until the response is back, at which point the value is 4.

So, to catch the response, you need to watch for a readyState of 4. That's an easy chore, because XMLHttpRequest fires readystatechange events. You can declare a callback function using the onreadystatechange field. The callback will then receive all state changes. The states below 4 aren't especially useful and are somewhat inconsistent across browser types anyway. So most of the time, all we're interested in is state 4, when the response is complete. "

Aber mir fehlt noch ein Puzzlestück: wenn ich nicht auf die "states below 4" setzen soll, wie weiß ich denn eigentlich, ob der Server _überhaupt_ eine Antwort gegeben hat? Ich möchte feststellen, ob der Server vielleicht nicht erreichbar ist (und prüfe das über einen Timeout). Also 0 + 1 werden scheinbar schon vom Client selbst geschmissen, die 4 kommt in jedem fall nur dann, wenn der Server geantwortet hat. Aber was ist mit 2 + 3? Was ist mit den Inkonstistenzen der Browser? Ich frage mich ja, warum so eine zentrale Technologie die das Web gerade umwälzt nicht besser dokumentiert ist. Nicht mal in meinem teuren "Ajax in Action"-Buch finde ich was Genaueres darüber :(

Beste Grüsse, Max