habe eine kleine Verständnisfrage zu Ajax: sehe ich das richtig, daß ein XMLHttpRequest eine XML Datei nur lesen kann?
Nein, das siehst du falsch. JS kann im Prinzip keine Dateien lesen, über AJAX kannst du Daten empfangen, entweder als XML oder ganz normal als Text.
Wie ich das verstanden habe wird dazu immer die Eigenschaft "GET" übergeben, und gibt dann *immer* die ganze Datei als Objektbaum (zB. req.responseXML) aus, die man dann per DOM Befehlen auswerten muss?
Das ist eine Möglichkeit, aber wie gesagt keine Datei, sondern die Antwort des Servers, das kann auch eine Datei sein, aber auch die Ausgabe eines Skriptes.
Ich habe eine Ajaxkurs besucht, in den Kursbeispielen ist auch ein kleiner Ajaxchat. Die Messages liegen in XML vor. Zum Anzeigen der chatmessages werden die Methoden, wie oben beschrieben, verwendet. Zum Absenden einer Chatnachricht allerdings wird ein anderer XMLHttpRequest gemacht, welcher eine PHP öffnet. Diese PHP Datei bekommt die entspr. Messages als query übergeben und führt sich dann die XML Datei zu Gemüte, um sie zu beschreiben.
Die PHP Datei wird nicht geöffnet, sondern der Browser schickt über AJAX einen request an den Server, der dann die PHP Datei ausführt (oder eine beliebige andere CGI Sprache). Die Parameter übergabe erfolgt wie bei allen anderen Skripten auch, entweder über die POST oder GET Parameter.
Dein Skript, liest dann offensichtlich eine XML Datei um diese mit den Parametern (also eine Art Template?) zu befüllen und dann an den Browser zurück zu schicken, das ist dann der response.
Meine Schlussfolgerungen:
- XML kann mit dem XMLHttpRequest direkt nur gelesen werden
es wird nichts gelesen, sondern empfangen. XML kann der Browser (mehr oder weniger) auch lesen und auswerten.
- dabei wird die *ganze* Datei direkt als Objekt übergeben
Nein, es kommt ein Datenstrom im Browser an, dieser wandelt den in ein Objekt um.
- zum Schreiben einer XML Datei braucht man einen Workaround, wie hier im vorliegenden Fall den XMLHttpRequest mit PHP
Das ist kein Workaround, sondern der normale Weg um mit einem Skript auf dem Server zu kommunizieren.
Struppi.