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