Ajax-Anfängerfrage

Hallo alle zusammen,

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]

mfg Nita

Bitte formatiere Code zukünftig mit den CODE-Tags im Forum.

Das ist kein Ajax-Problem, sondern hat mit dem Variable Scope zu tun.
Betrifft also Javascript Allgemein:
http://www.w3schools.com/js/js_scope.asp

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();
}

[/CODE]

Fällt dir hier etwas auf?

document.getElementById("zielelement").innerHTMl = xhr.responseText;

Danke für deine Geduld :slight_smile:

War ja mal wieder ein ziemlich dummer Fehler…

mfg Nita