ich habe beschlossen mich ein wenig mit Ajax auseinanderzusetzen und bin aber leider schon beim ersten Programm auf einen Fehler gestoßen, den ich nicht genau finden kann…
Die Console meint die Variable xhr würde im eingefärbten Bereich der nicht verfügbar sein…
Hoffe ihr könnt mir da weiterhelfen:
[CODE] function sendXhr () {
var xhr;
//Abfrage ob XMLHTTP-Request verfügbar
if (window.XMLHttpRequest) {
//starte einen neuen Request
xhr = new XMLHttpRequest();
}
//Worksaround für IE 7 und schlechtere Browser
else if (window.ActiveXObjekt) {
//greife auf das Objekt ActiveX zu
xhr = new ActiveObject('MSXML2.XMLHTTP');
}
else {
return false;
}
//Wird Aufgerufen wenn sich der Status der Abfrage ändert
xhr.onreadystatechange = xhrReadyStateHandler;
//open öffnet die Datei
//Erster Parameter: Anfragungsmethode(GET, POST, HEAD)
//Zweiter Parameter: Dateinname der zu öffnenden Datei
//Dritter Parameter: Asychrone(true)/Syrochne(false)
xhr.open("GET", "ajax.html", true);
//send startet die Abfrage
//Bei Get muss kein Parameter angegeben werden, oder wie hier null
//Bei Post kommt in diesen Parameter der Anfragekörper(Post body)
xhr.send(null);
}
function xhrReadyStateHandler() {
//ready.State prüft den aktuellen Fortschritt des Requests(0-4)
//Wobei 4 meist interessant ist, da dort alle Antwortdaten übertragen wurden
if (xhr.readyState != 4) {
return;
}
//Server Anwort ist eingetroffen
//response.Code überprüft den HTTP-Status des Objekts
//200: erfolgreich, 404: Nicht gefunden, 500: server-interner Fehler
if (xhr.response.Code == 200) {
//Server-Antwort in Ordnung
//Zielelemnt wird der Inhalt zugewiesen
//response.Text enthält die Server Antwort als String
document.getElementById("zielelement").innerHTMl = xhr.responseText;
}
else {
alert("Fehler beim Laden der Seite:/n"+xhr.responseCode)
}
}
</script>[/CODE]
Ich hab es jetzt ein wenig umgeschrieben…
Gibt jetzt kein Problem mehr mit der Variable, aber der Text erscheint trotzdem nicht…
[CODE]function sendXhr() {
var xhr;
//Abfrage ob XMLHTTP-Request verfügbar
if (window.XMLHttpRequest) {
//starte einen neuen Request
xhr = new XMLHttpRequest();
}
//Worksaround für IE 6 &5
else if (window.ActiveXObjekt) {
//greife auf das Objekt ActiveX zu
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
return false;
}
//Wird Aufgerufen wenn sich der Status der Abfrage ändert
xhr.onreadystatechange = function () {
if (xhr.readyState != 4) {
return;
}
//Server Anwort ist eingetroffen
if (xhr.status == 200) {
//Server-Antwort in Ordnung
//Zielelement wird der Inhalt zugewiesen
document.getElementById("zielelement").innerHTMl = xhr.responseText;
}
else {
alert("Fehler beim Laden der Seite.");
}
}
xhr.open("GET", "ajax.html", true);
xhr.send();
}