2016-04-28 7 views
0

Ich benutze Ajax viel für meine Web-Projekte, aber gerade jetzt möchte ich es vollständig verstehen. Ich bin auf dieses Problem gestoßen.Erklären Ajax Code-Reihenfolge

function loadDoc() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4 && xhttp.status == 200) { 
    document.getElementById("demo").innerHTML = xhttp.responseText;//get response 
    } 
    }; 
    xhttp.open("GET", "ajax_info.txt", true); 
    xhttp.send();//send request 
} 

Schauen Sie sich den Code an. In meiner Logik denke ich, dass wir erst eine Anfrage senden müssen und dann später eine Antwort bekommen. Warum in Ajax-Code erhalten wir Antwort vor Send Request. Fehle ich hier etwas? Vielen Dank im Voraus!

Antwort

0

Dieser Teil:

xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4 && xhttp.status == 200) { 
    document.getElementById("demo").innerHTML = xhttp.responseText;//get response 
    } 
    }; 

definiert eine Rückruffunktion (asynchron). Diese Funktion wird nur aufgerufen, wenn Ihr Objekt xmlhttprequest den Status ändert (Sie haben es an das Ereignis onreadystatechange angefügt). Sie müssen die Rückruffunktion definieren, bevor Sie den Anruf selbst tätigen (xhttp.open). Andernfalls weiß es nicht, was zu tun ist, aber der Code selbst wird nicht ausgeführt, bis sich der Status der xmlrequestobject ändert.