Problem beim Auslesen einer XML-Datei
Olliminatore
- javascript
0 Ulli0 Axel Richter
Um es kurz zu sagen ich habe das selbe Problem wie hier:http://forum.de.selfhtml.org/archiv/2006/1/t121689/
nur kann ich nicht die Lösung nachvollziehen.
Der zum Schluß angegebene Test funktioniert auch bei mir.
Momentan muss ich umständlich responseText anstatt responseXML nehmen!? Das XML ist eigentlich 100% valid.
(responseXML gibt zwar ein Objekt zurück aber ohne scheinbaren Inhalt.)
Alles mit IE6 (FF no problem)
Der XML Header sieht so aus <?xml version="1.0" encoding="utf-8"?>
Hallo,
Um es kurz zu sagen ich habe das selbe Problem wie hier:http://forum.de.selfhtml.org/archiv/2006/1/t121689/
nur kann ich nicht die Lösung nachvollziehen.
Die Lösung war, den Content-Type im HTTP Header auf text/xml zu setzen. Das muss Serverseitig passieren. Womit lieferst du die XML Datei aus?
Grüße, Ulli
Hallo,
Um es kurz zu sagen ich habe das selbe Problem wie hier:http://forum.de.selfhtml.org/archiv/2006/1/t121689/
nur kann ich nicht die Lösung nachvollziehen.
Der zum Schluß angegebene Test funktioniert auch bei mir.
Du meinst den http://www.datenverdrahten.de/test/ajaxtest.html?
Momentan muss ich umständlich responseText anstatt responseXML nehmen!? Das XML ist eigentlich 100% valid.
(responseXML gibt zwar ein Objekt zurück aber ohne scheinbaren Inhalt.)Alles mit IE6 (FF no problem)
Der XML Header sieht so aus <?xml version="1.0" encoding="utf-8"?>
Die im Test per Ajax-Request ausgelieferte Ressource "http://www.datenverdrahten.de/test/ajaxtest.xml" wird mit Content-Type: text/xml ausgeliefert. Sehen kann man das hier: http://web-sniffer.net/?url=http%3A%2F%2Fwww.datenverdrahten.de%2Ftest%2Fajaxtest.xml&submit=Submit&http=1.1&gzip=yes&type=GET&ua=Mozilla%2F4.0+(compatible%3B+MSIE+6.0%3B+Windows+NT+5.0%3B+.NET+CLR+1.1.4322)+Web-Sniffer%2F1.0.24.
Teste dort mal Deine XML-Ressource. Mit welchem Content-Type wird diese ausgeliefert?
Siehe auch hier http://forum.de.selfhtml.org/archiv/2006/6/t130666/#m844814.
viele Grüße
Axel
Die im Test per Ajax-Request ausgelieferte Ressource "http://www.datenverdrahten.de/test/ajaxtest.xml" wird mit Content-Type: text/xml ausgeliefert. Sehen kann man das hier: http://web-sniffer.net/?url=http%3A%2F%2Fwww.datenverdrahten.de%2Ftest%2Fajaxtest.xml&submit=Submit&http=1.1&gzip=yes&type=GET&ua=Mozilla%2F4.0+(compatible%3B+MSIE+6.0%3B+Windows+NT+5.0%3B+.NET+CLR+1.1.4322)+Web-Sniffer%2F1.0.24.
Teste dort mal Deine XML-Ressource. Mit welchem Content-Type wird diese ausgeliefert?
Siehe auch hier http://forum.de.selfhtml.org/archiv/2006/6/t130666/#m844814.
Als Ergebnis kommt Content-Type: text/xml; charset=utf-8;
Wobei mein Code vollgendes ausgibt.
httpRequest = new ActiveXObject("Microsoft.XMLHTTP")
httpRequest.open("GET", "http://en.wikipedia.org/w/query.php?format=xml&what=revisions&rvlimit=16&rvcomments&titles=User_talk:Invitatious", false);
httpRequest.send(null);
httpRequest.getAllResponseHeaders() //ist leerer String
httpRequest.responseXML.documentElement // ist null
Hallo
Wobei mein Code vollgendes ausgibt.
httpRequest = new ActiveXObject("Microsoft.XMLHTTP")
httpRequest.open("GET", "http://en.wikipedia.org/w/query.php?format=xml&what=revisions&rvlimit=16&rvcomments&titles=User_talk:Invitatious", false);
httpRequest.send(null);
httpRequest.getAllResponseHeaders() //ist leerer String
httpRequest.responseXML.documentElement // ist null
Mein IE macht das. Er gibt nur eine Warnung aus:
Die Seite greift auf Informationen aus anderen Daten zu.
Dies kann ein Sicherheitsproblem darstellen. Möchten
Sie den Vorgang fortsetzten?
[Ja] [Nein]
Bei "Ja" wird der Request ausgeführt und sowohl httpRequest.getAllResponseHeaders() als auch httpRequest.responseXML.documentElement sind befüllt.
Allerdings stolperst Du mit dieser Idee in eine böse Falle, wenn Du das Ganze mal für nicht-IE-Browser umsetzen willst. Auch bei Ajax gilt die same origin policy siehe auch http://forum.de.selfhtml.org/archiv/2006/4/t127959/. Du kannst also nicht einfach einen XMLHTTPRequest auf eine ganz andere Domain ausführen.
Eventuell haben die IEs unter XP da auch bereits striktere Regeln. Probier mal:
try {
httpRequest.open("GET", "http://en.wikipedia.org/w/query.php?format=xml&what=revisions&rvlimit=16&rvcomments&titles=User_talk:Invitatious", false);
httpRequest.send(null);
if (httpRequest.status == 200) {
alert(httpRequest.getAllResponseHeaders());
alert(httpRequest.responseXML.documentElement);
} else {
alert("ERROR: "+ httpRequest.status);
}
} catch (ex) {
alert(ex);
}
viele Grüße
Axel
Hallo,
httpRequest = new ActiveXObject("Microsoft.XMLHTTP")
try {
httpRequest.open("GET", "http://en.wikipedia.org/w/query.php?format=xml&what=revisions&rvlimit=16&rvcomments&titles=User_talk:Invitatious", false);
httpRequest.send(null);
if (httpRequest.status == 200) {
alert(httpRequest.getAllResponseHeaders());
alert(httpRequest.responseXML.documentElement);
} else {
alert("ERROR: "+ httpRequest.status);
}
} catch (ex) {
if (ex.description) alert(ex.description); else alert(ex);
}
Ergänzung:
Solange das anfordernde Dokument, das mit dem Ajax-Code, in der Lokalen Intranetzone ist und somit die Einstellung
Internetoptionen - Sicherheit - Stufe anpassen (Sicherheitseinstellungen) - Verschiedenes - Auf Datenquellen über Domänengrenzen hinweg zugreifen
auf "Eingabeaufforderung" steht, zeigt der IE6.0 (alle aktuellen Patches) unter Windows 2000 SP4 (alle aktuellen Patches) das von mir im Vorpostig beschriebene Verhalten.
Befindet sich das anfordernde Dokument in der Internet-Zone bzw. ist die o.a. Einstellung auf "Deaktivieren", dann kommt auch im IE der Fehler "Erlaubnis verweigert".
Das gilt natürlich nur, wenn das anfordernde Dokument nicht selbst vom Host "en.wikipedia.org" angefordert wurde.
@Olliminatore:
Wie hast Du es geschafft, dass Dein Ajax angeblich mit FireFox problemlos funktioniert? Liegt das aufrufende Dokument auf en.wikipedia.org?
viele Grüße
Axel