Probleme mit Firefox und AJAX/DOM/XML
buzhidao
- javascript
Hallo,
ich habe gerade neu mit AJAX angefangen und habe erstmal seit Tagen immer mal wieder mit kleinen Problemen zu kämpfen. Bisher konnte ich noch alles lösen. Für das folgende Problem fand ich aber bisher keine Antwort.
Zuerst mal mein Code:
<html>
<head>
<title>AJAX Test</title>
</head>
<body>
<script type="text/javascript">
var xmlhttp = null;
// Mozilla, Opera, Safari, Internet Explorer 7
if (typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}
if (!xmlhttp) {
// Internet Explorer 6 and older
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
xmlhttp = null;
}
}
}
var xmlfile = null;
if (xmlhttp) {
xmlhttp.open('GET', 'datei.xml', true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
xmlfile = xmlhttp.responseXML;
}
};
xmlhttp.send(null);
}
var ergebnis = xmlfile.getElementsByTagName('title')[0].childNodes[0].data;
alert(ergebnis);
</script>
</body>
</html>
Mir geht es erstmal um das Prinzip auf XML-Dateien zugreifen zu können und diese mit DOM auszulesen. Unter dem IE (7) klappt die obige Abfrage auch perfekt. Im Firefox erscheint dagegen gar nichts. Woran liegt es? Meine Vermutung war erst dass es an der Funktion getElementsByTagName liegt, aber das kann ich mir nicht vorstellen.
Ich hoffe hier kann jemand einem Anfänger wie mit weiter helfen. Das Problem ist bestimmt ganz simpel zu lösen, aber bisher habe ich nach mehrstündigem Suchen nichts gefunden.
MfG,
buzhidao
Moin Moin!
Ich denke, Du hast ein Timing-Problem: Du setzt den Request ab und erwartest, dass die Response sofort da ist.
Du müßtest darauf warten, dass eine positive Antwort vom Server kommt. Sinnvollerweise würdest Du im onreadystatechange-Eventhandler weiterarbeiten. Verschiebe die letzten zwei JS-Zeilen dort hinein.
Alexander
Moin Moin!
Ich denke, Du hast ein Timing-Problem: Du setzt den Request ab und erwartest, dass die Response sofort da ist.
Du müßtest darauf warten, dass eine positive Antwort vom Server kommt. Sinnvollerweise würdest Du im onreadystatechange-Eventhandler weiterarbeiten. Verschiebe die letzten zwei JS-Zeilen dort hinein.
Alexander
ich wusste doch, dass es irgendwas simples ist. Danke dir.
So dumm, hätte echt auch selbst drauf kommen müssen. Meistens übersieht man ja, was einem direkt vor der Nase liegt. Nochmals danke.
Noch eine allgemeine Frage zu AJAX. Ist die Methodik mit XMLHTTPRequest das gängigste? Hatte auch mal von AJAXRequest gelesen, aber den Ansatz nicht weiter verfolgt.
Gibt es einfachere/kürzere Ansätze als XMLHTTPRequest?