Ajax.Request: responseXML funkt bei IE nicht richtig
MarioMan
- javascript
Hi,
ich habe ein Problem mit der Verabeitung von XML im Internet Explorer. Im Firefox funktionierts super. hier einmal die XML, welche mit PHP generiert wird.
<?xml version="1.0" encoding="utf8"?>
<kuecheliste>
<kueche id="1">Asiatisch</kueche>
<kueche id="2">Bioküche</kueche>
<kueche id="3">Chinesisch</kueche>
<kueche id="4">Französisch</kueche>
<kueche id="5">Griechisch</kueche>
<kueche id="6">Indisch</kueche>
<kueche id="7">Italienisch</kueche>
<kueche id="8">Japanisch</kueche>
<kueche id="9">Kärtnerisch</kueche>
<kueche id="10">Koscher</kueche>
<kueche id="11">Lateinamerikanisch</kueche>
<kueche id="12">Mediterran</kueche>
<kueche id="13">Mexikanisch</kueche>
<kueche id="14">Mostviertlerisch</kueche>
<kueche id="15">Österreichisch</kueche>
<kueche id="16">Pannonisch</kueche>
<kueche id="17">Persisch</kueche>
<kueche id="18">Spanisch</kueche>
<kueche id="19">Steirisch</kueche>
<kueche id="20">Thailändisch</kueche>
<kueche id="21">Türkisch</kueche>
<kueche id="22">Vegetarisch</kueche>
<kueche id="23">Waldviertlerisch</kueche>
<kueche id="24">Wienerisch</kueche>
<kueche id="28">International</kueche>
</kuecheliste>
nun zum javascript. das xml lade ich mit prototype Ajax.Request. soweit funkt alles bei beiden. dann die funktion zum verarbeiten...
var showResponse = function(r)
{
// alert(r.responseText);
_kxml = r.responseXML;
_k = _kxml.getElementsByTagName("kueche");
if(_k[0].hasChildNodes())
{
alert('ja');
} else {
alert('nein');
}
}
ihr seht, zum test habe ich mal das XML mit der methode responseText in einen alert-fenster ausgeben lassen. auch dies funktioniert in beiden browser. ich versuche anschließend die XML-Elemente 'kueche' in ein objekt-array _k zu packen. mit der prüfung _k.length bekomme ich bei firefox die länge des array mit, ich glaub jetzt, 25. der IE gibt mir 0 zurück. als nächstes versuchte ich das erste array-element auf kindknoten zu prüfen. bei FF kommt true, also das alert mit ja, aber IE bricht das script ohne fehler ab. ich komme da einfach nicht weiter... wie kann ich im IE nun auf die kueche-elemente zugreifen.
was ich nicht verstehe, ich mache das nicht zum ersten mal. siehe www.rangliste.at -> Rangliste 8-Ball. Alle Spieler kommen von einer mit php erzeugten XML-Liste. die rangliste so zu bauen war natürlich nicht notwendig. war aber für mich eine spielwiese für ajax.
bitte um hilfe.. danke!
wollt nur mal nachfragen, ob ihr noch weitere infos benötigt. hab mich jetzt schon 6 std. damit gespielt. komm einfach nicht weiter...
hat keiner von euch einen plan?
so wie ich das sehe, ist das ja nicht mal ein komplizierter code den ich da verwende... :-(
danke nochmals...
Problem nach 8Std. gelöst... oh man...
scheinbar hat der IE mehr probleme mit umlauten, als ich dachte. ich habe zwar im php einen header() gesetzt, welcher die ausgabe als text/xml und charset utf-8 definiert hat. das war aber scheinbar den IE zuwenig. ich musste zu jeden datensatz im php extra noch den text mit utf8_encode($ausgabe) encodieren. dann hats auch der IE geschluckt.
jetzt gehts auch in IE!!!!!!!!!!!!!
Fall Abgeschlossen! :-)
scheinbar hat der IE mehr probleme mit umlauten, als ich dachte.
Wenn ein Text korrekt kodiert wurde und der Browser die Kodierung eines Textes kennt (sie ihm etwa durch eine Kodierungsangabe mitgeteilt wird), dann gibt es keine "Probleme mit Umlauten".
Selbige gibt es nur, wenn diese Voraussetzungen nicht gegeben sind.
ich habe zwar im php einen header() gesetzt, welcher die ausgabe als text/xml und charset utf-8 definiert hat. das war aber scheinbar den IE zuwenig. ich musste zu jeden datensatz im php extra noch den text mit utf8_encode($ausgabe) encodieren. dann hats auch der IE geschluckt.
Wenn du auf eine Box mit rostigen Nägeln "Gold und Juwelen" draufschreibst, ist noch lange nicht Gold drin.
Wenn du der Ausgabe deines PHP-Scriptes die Kodierungsangabe UTF-8 verpasst, dann ändert sich die Kodierung des Textes nichts, es sei denn, du kodierst den Text mit UTF-8.
Mathias