• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Ajax-Anfängerfrage

Nitamud

Mitglied
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>




mfg Nita
 
Zuletzt bearbeitet:
Werbung:
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:

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


xhr.onreadystatechange = xhrReadyStateHandler;
xhr.open("GET", "ajax.html", true);
xhr.send(null);
}





function xhrReadyStateHandler() {

if (xhr.readyState != 4) {
return;
}
//Server Anwort ist eingetroffen
if (xhr.response.Code == 200) {
//Server-Antwort in Ordnung
//Zielelement wird der Inhalt zugewiesen
document.getElementById("ziel").innerHTMl = xhr.responseText;
}
else {
alert("Fehler beim Laden der Seite.");
}
}




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

Fällt dir hier etwas auf?

Code:
document.getElementById("zielelement").innerHTMl = xhr.responseText;
 
Zurück
Oben