Hi there,
habe eine kleine Verständnisfrage zu Ajax: sehe ich das richtig, daß ein XMLHttpRequest eine XML Datei nur lesen kann?
Zunächst einmal hat AJAX mit XML überhaupt nichts zu tun.
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?
Nein. Abgesehen davon, daß Du mit einem GET-Request umfassende Daten nie zum Server transportieren könntest. Was Du von diesem Request zurückbekommst, liegt alleine am Prozess, den Du mit diesem Request am Server startest. Ich geb' zum Beispiel ab und an nur den passenden Namen zurück, wenn jemand in ein Eingabefeld eine Kundennummer oder eine Email eingibt.
Meine Schlussfolgerungen:
- XML kann mit dem XMLHttpRequest direkt nur gelesen werden
Nein, die Rückgabe in Form einer XML-Struktur ist nur dem Umstand geschuldet, daß man mit Javascript und dem DOM-Konzept XML-"Bäume" relativ leicht auswerten kann. Aber Du könntest per (kurzem) GET oder POST auch Daten in Form einer XML-Struktur übergeben, das wäre aber beliebig mühsam und würde vermutlich genau nichts bringen. "XML" ist ja nicht irgendeine andere Qualität von Daten sondern einfach nur eine Möglichkeit zu deren Strukturierung.
- dabei wird die *ganze* Datei direkt als Objekt übergeben
Nein. Stell Dir einmal vor, Du machst einen Request auf das New Yorker Telefonbuch, da zerplatzt Dir nachher Dein Browser, wenn die Daten endlich angekommen sind;)
- zum Schreiben einer XML Datei braucht man einen Workaround, wie hier im vorliegenden Fall den XMLHttpRequest mit PHP
Zum Schreiben einer XML-Datei braucht man erstens Daten und zweitens eine Vorstellung, wie man diese strukturieren will. PHP kann auch keinen Request absetzen, weil es schon auf dem Server ausgeführt wird.
In der Praxis funktioniert das einfach so:
Das Javascript, das in Deinem Browser läuft, schickt über das httprequest-Objekt einen Request an den Server. Der startet daraufhin ein Programm, daß Deine Anforderung überprüft und auszuführen versucht, bspw. eine SQL-Abfrage nach einem bestimmten Datensatz. Das Ergebnis dieser Abfrage schickt dieses Programm dann einfach an den Rechner zurück, von die Anfrage kam, wo wiederum das Javasrcript im Browser dafür zuständig ist, das Ergebnis auszuwerten. Es ist aber weder festgelegt, welches Programm am Server da läuft, (das kann, muss aber nicht PHP sein) noch in welcher Form diese Daten zurückgeschickt werden. Um das muss sich der Programmierer selbst kümmern (oder irgendein Framework verwenden, dann programmiert er halt eine Ebene höher)...