2016-12-23 1 views
1

Ich lerne über AJAX und ich versuche, den Inhalt meiner Datei „info.txt“, um in einem div mit id „Demo“ angezeigt werden. Es bleibt jedoch immer leer. Um dies zu testen, müssten Sie diesen Code leider auf einem aktuellen Server ausprobieren (was ich bin) und eine eigene "info.txt" -Datei angeben. Ich bitte bitte eine Standard-Javascript-Antwort (nicht-JQuery), bitte! Wie drucke ich die Antwort mit AJAX/Javascript?

function loadDoc() { 
 
    var xhttp = new XMLHttpRequest(); 
 
    xhttp.open("GET", "info.txt", true); 
 
    xhttp.send(); 
 
    document.getElementById("demo").innerHTML = xhttp.responseText; 
 
}
<div id="demo"> 
 
<h1>The XMLHttpRequest Object</h1> 
 
<button type="button" onclick="loadDoc()">Change Content</button> 
 
</div>

+3

Ihr Problem ist das erste „A“ in AJAX, was bedeutet, es asynchron ist. Sie müssen einen Rückruf registrieren, um die Antwort zu verarbeiten. Schau mal hier nach: https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started – Quagaar

Antwort

1

Die true Sie vorbei zu xhttp.open sagt Ihre Anfrage async ist, was bedeutet, werde es nicht auf die Antwort warten.

Sie müssen entweder entfernen, dass true (unrecommended) oder einen Satz richtig einen Rückruf für, wenn die Antwort empfangen wird:

function loadDoc() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.open("GET", "info.txt", true); 
    xhttp.onreadystatechange = function() { 
    if (xhttp.readyState === XMLHttpRequest.DONE && xhttp.status === 200) { 
     document.getElementById("demo").innerHTML = xhttp.responseText; 
    } 
    }; 
    xhttp.send(); 
} 
+0

ah ... das habe ich nicht bekommen. Danke Jack. Könntest du bitte erklären, warum 'send()' hinter 'onreadystatechange()' steht? –

+1

@GovindRai, weil Sie einen Callback mit 'onreadystatechange' definieren, der _wenn_ irgendwelche Änderungen passieren ... oder in diesem Fall gibt es wenn, um zu überprüfen, ob es abgeschlossen ist (' DONE'). Eine einfache/vereinfachte Art, darüber nachzudenken, ist, wenn Sie jemanden bitten, für Sie in den Laden zu gehen und etwas mit dem Zeug zu tun. Sie werden ihnen sagen, was Sie wollen ("öffnen") und was damit tun, wenn sie zurückkommen ('onreadystatechange') _vor_ senden Sie sie (' send') sie auf dem Weg zum Laden. – Jack