Hi,
ich führe mittels prototype.js einen AJAX-Request auf eine lokale XML-Ressource aus. Die responseText-Eigenschaft enthält auch den gesamten XML-Code, lediglich responseXML kann ich im IE 6 nicht vernünftig nutzen:
(Das von prototype.js gelieferte Transport-Objekt heißt bei mir 'data'.)
- Der XML-Code ist valide und wird auch vom IE erkannt. Das weiß ich, weil er sich anders verhalten hat, als ich dummerweise ein Sonderzeichen unkodiert drin stehen hatte ;-) und weil data.responseXML.documentElement.nodeName dem Root-Element entspricht.
- Ich kann mich mit firstChild, childNodes etc. durch das XML durchhangeln.
- Typische DOM-Methoden wie getElementsByTagName führen jedoch zum Script-Abbruch. Nicht etwa zu einem Fehler, sondern der IE scheint sich in eine Ecke zu setzen und zu schmollen.
- typeof() auf diese DOM-Methoden angewendet liefert 'unknown'. Ja, richtig gelesen: 'unknown', nicht 'undefined'.
- 'for (i in o)', wenn o entweder data.responseXML oder eines seiner Unterobjekte ist, führt ebenfalls zu einem fehlerlosen Abbruch,
- genauso wie 'irgendwoImHtml.appendChild(data.responseXML.irgendwas)'.
- Die Objekte haben weder eine toString-Methode, noch ein innerHTML (was nicht wundert), noch ein innerXML, egal in welcher Schreibweise (typeof() == 'undefined').
- Es ändert sich dabei nichts, wenn ich von 'data.responseXML.selectSingleNode("//meinRootElement")' ausgehe.
Insgesamt betrachtet kann ich den XML-Code also kein Stück benutzen. Der Server liefert als Content-Type text/xml oder application/xml (data.getAllResponseHeaders() bestätigt dies), das Dokument wird mit oder ohne '<?xml version="1.0" encoding="UTF-8"?>' ausgeliefert, die URI endet auf '.htmls' oder '.xml' - alles ohne Wirkung. Unnötig zu erwähnen, dass ich in Mozilla auf keinerlei nennenswerte Probleme stoße.
Was mich an der Geschichte am meisten verwirrt ist das 'unknown', welches wohl die Ursache für die Script-Abbrüche ohne Fehlermeldung ist. Ich finde im Netz aber auch keine gescheiten Informationen darüber (ist halt ein schlechter Suchbegriff ;-)). Kann mir jemand mehr darüber sagen? Gibt es eine Debugging-Strategie, die ich fahren kann, bzw. kennt oder erahnt jemand bereits die Ursache? Hat jemand eine Idee für einen Workaround, z.B. einen Ansatz, responseText "manuell" in XML umzuwandeln?
Cheatah
P.S.: Das XML besteht aus einem <multiparts>, in welchem sich n <part>-Elemente befinden, die schlicht und ergreifend HTML enthalten. Wenn es hilft, ließe sich dieser Teil als CDATA-Sektion deklarieren.
--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes