私はAjaxを初めて使っていて、Lynda "Javascript and Ajax"チュートリアルに従っています。これは私が遭遇した問題です。
私はそれにテキストHELLO WORLDが保存されている "データ"というテキスト文書を持っています。
私のindex.htmlファイルは:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>JavaScript AJAX</title>
</head>
<body>
<script src="script.js"></script>
</body>
</html>
私のjavascriptファイルは:
for(var i = 0; i < 100; i++){
var request = new XMLHttpRequest();
request.open("GET", "data.txt",false);
request.send();
console.log(request);
document.writeln(request.responseText);
}
私の質問は私が同期を行うときですXMLHttpRequestを引数としてfalse(request.open())を指定すると、ブラウザは "HELLO WORLD"をコードごとに100回表示しますが、Asynchronous XMLHttpRequestを引数としてtrueまたは何も指定しないで、ブラウザは何も表示しません。それはなぜそうですか?
誰もがこれについて私を助けてくれますか?私は、非同期と同期リクエストに関するいくつかの知識を掴んでいます。これらは上記のコードとは何か異なった働きをしていますか?
回答:
回答№1は2非同期呼び出しは、後続のコードの実行を妨げません。この例では、非同期要求が完了する前にconsole.logが実行されています。
上のコードを参考にして、実際の例を示します。
for (var i = 0; i < 100; i++) {
var req = new XMLHttpRequest();
req.addEventListener("load", complete, false);
req.open("GET", "/echo/json/", true);
req.send();
}
function complete(e) {
console.log(this.responseURL);
}