responseText tuts responseXml nicht
Flo
- javascript
0 Felix Riesterer0 Flo0 hotti
Ich bastel grad an meiner ersten Ajax Abfrage (meine erste ohne Framework) und bekomm mit .responseXML immer null. .responseText funktioniert einwandfrei. Das XML Dokument ist wohlgeformt, da es entweder vorher von einem XSL Sheet anstandslos ausgelesen wird oder eh schon auf den Prolog und ein leeres Wurzelelement abgespeckt worden ist. Ich habe es mit encoding="UTF-8" als auch encoding="ISO-8859-1" versucht und dementsprechend auch mit .setRequestHeader("Content-Type", "text/xml; charset=utf-8") und .overrideMimeType('text/xml'), bringt alles nichts. Sobald ich versuche mit .responseXML zu arbeiten, erhält das request Objekt den Wert Null und Firefox stürzt via Firebug ab, wenn ich mir das Objekt im Überwachungsfenster ansehen möchte. Gibt es da irgendwas simples was ich übersehen habe? Liegt es vielleicht daran, dass ich mir die Sache über den Tomcat ausliefern lasse? (Das Problem bleibt bestehen, wenn ich die Datei einfach über den Firefox öffne und nicht über eine URL) oder irgendwo zwischen meinem XML-XSLT-Javascript Konstrukt? Oder gibt es für das Problem ein ganz einfaches Stichwort und google hilft mir auf die Sprünge? Code hab ich noch keinen gepostet, weil der dann nämlich noch mehr bereinigt werden müsste und ich dann wahrscheinlich auch selbst auf das Problem stossen würde ;-)
von daher in sonntäglicher Bequemlichkeit...
Flo
Lieber Flo,
hast Du Dir das XML-Dokument von einem Validator prüfen lassen?
Wenn Dir Dein FF (welcher?) abschmiert, tun das dann auch andere Browser? Was sagen deren Fehlerkonsolen?
Liebe Grüße,
Felix Riesterer.
Hi Felix
hast Du Dir das XML-Dokument von einem Validator prüfen lassen?
hab ich mir bei
<?xml version="1.0" encoding="UTF-8"?>
<root></root>
geschenkt und bei der anderen Datei sollte das ja der XSLT Prozessor gewährleisten (Habs dennoch beide beim w3 durchlaufen lassen -> ok)
Wenn Dir Dein FF (welcher?) abschmiert, tun das dann auch andere Browser?
Was sagen deren Fehlerkonsolen?
Der Firefox (3.5) verabschiedet sich ja nur zusammen mit dem Firebug. Die Fehlermeldungen sind beim FF, dass das request Objekt null ist, wenn ich drauf zugreifen möchte, der IE sagt Fehler: Das Objekt unterstützt diese Eigenschaft oder Methode nicht. Z34 -> var response = http.responseXML;
Ich hab die web.xml auch noch um
<mime-mapping>
<extension>xml</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
erweitert, ohne großartigen Erfolg. Kann ich mir irgendwo anzeigen lassen ob der MIME Type korrekt ausgeliefert worden ist? Firebug zeigt unter der Netzwerkansicht der entsprechenden Datei den Content-Type text/xml an. Sollte es doch sein oder?
Flo
Lieber Flo,
hast Du Dir das XML-Dokument von einem Validator prüfen lassen?
hab ich mir [...] geschenkt.
wie Du meinst. Ich prüfe in solchen Fällen, um von mir unvorhergesehene Faktoren (wie z.B. ungültige Zeichen) auszuschließen.
Liebe Grüße,
Felix Riesterer.
Lieber Flo,
hast Du Dir das XML-Dokument von einem Validator prüfen lassen?
hab ich mir [...] geschenkt.
(Habs dennoch beide beim w3 durchlaufen lassen -> ok)
wie Du meinst. Ich prüfe in solchen Fällen, um von mir unvorhergesehene Faktoren (wie z.B. ungültige Zeichen) auszuschließen.
Liebe Grüße,
Felix Riesterer.
;-(
var daten = http.responseText;
if (window.ActiveXObject) {
var xml = new ActiveXObject("Microsoft.XMLDOM");
xml.loadXML(daten);
} else if (document.implementation) {
var xml = (new DOMParser()).parseFromString(daten, "text/xml");
}
macht es auch nicht. Die var daten ist belegt und nach dem new DOMParser hab ich das selbe Ergebnis wie bisher. Object ist mit null belegt etc...
Hi,
Ist es aber nicht.
Wenn du AJAX „richtig machst“, dann wird das XML dabei bereits geparst - das muss man dann nicht noch extra machen.
Kann man dein Problem mal online betrachten?
MfG ChrisB
hi,
... Ich habe es mit encoding="UTF-8" als auch encoding="ISO-8859-1" versucht und dementsprechend auch mit .setRequestHeader("Content-Type", "text/xml; charset=utf-8")
Ja, gut, das ist der Request. Wie sieht denn der HTTP-Response-Header aus? Welchen Header sendest Du für .responseText und welchen sendest Du für .responseXML?
Hotti