molily: Gelöst: xmlHttpRequest als xml nur mit Dateiendung .xml?

Beitrag lesen

Hallo,

Wichtiger als die Headerangabe im PHP-File scheint die Anfrage zu sein, denn der folgende Zusatz bringt den Erfolg, selbst wenn ich die Header im PHP weglasse:

xmldata.setRequestHeader("Content-Type", "Text/xml");

Du scheinst Anfrage- mit Antwort-Headern zu verwechseln.

Content-Type ist ein Antwort-Header*, den der Server schickt. Er ist kein Anfrage-Header*, daher ist setRequestHeader("Content-Type", "…") auf dem Client im Grunde Unsinn.

Da es sich um einen Antwort-Header handelt, ist es schon richtig, dass das PHP-Script *serverseitig* selbigen Header setzt. Genau das tut eben: header('Content-Type: text/xml');

Dass der setRequestHeader-Aufruf in deinem Fall etwas ändert, kann ich mir nicht erklären. Wenn der Server den Content-Type text/xml – oder besser application/xml – sendet, dann sollte der Browser versuchen, die Antwort als XML zu parsen. Wenn es sich um ein wohlgeformtes XML-Dokument handelt, ist der DOM-Zugriff über responseXML möglich.

(* bei GET-Anfragen. Bei POST und PUT ist er als Anfrage-Header möglich, um den Inhaltstyp der Daten im Anfrage-Body anzugeben.)

Grüße,
Mathias