2016-12-23 12 views
1

私はAJAXについて学んでおり、divの中に表示される "info.txt"というファイルの内容をid "demo"で取得しようとしています。しかし、それは空白に戻ります。残念ながら、これをテストするには、実際のサーバー(私自身)でこのコードを試し、独自の "info.txt"ファイルを提供する必要があります。私は標準のjavascriptの答え(非JQuery)を提供してください! 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

あなたの問題は、それが非同期であることを意味、AJAXでの最初の「A」です。応答を処理するためにコールバックを登録する必要があります。ここでスタートを見てください:https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started – Quagaar

答えて

1

trueあなたはxhttp.openに渡していることが応答を待つつもりはないことを意味する、あなたの要求は非同期であると言っています。

あなたはtrue(非推奨)、または適切に応答を受信したときのコールバックを設定することを削除するか必要があります。

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

ああ...それは私が得ていないものです。ありがとうジャック。 'send()'が 'onreadystatechange()'の後にある理由を説明してください。 –

+1

@GovindRaiあなたは 'onreadystatechange'でコールバックを定義しているので、何か変更が起こったときに...またはこの場合、完了しているかどうかを確認する(' DONE')必要があります。これを考える簡単で簡単な方法は、誰かにあなたのために店に行って、そのもので何かをするように求めている場合です。あなたはあなたが望むもの( 'オープン')と彼らが店に行く途中で戻ってくるとき( '' onreadystatechange')にあなたが送る( ''送って)何をするのだろうか? – Jack

関連する問題