我是ajax的新手,正在关注Lynda“Javascript和Ajax”教程。这就是我遇到的问题。
我有一个名为“data”的文本文档,其中保存了文本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);
}
我的问题是当我通过给出参数false(在request.open()上)执行同步XMLHttpRequest时,我的浏览器按照代码显示“HELLO WORLD”100次。但是当我尝试通过赋予参数true或者执行Asynchronous XMLHttpRequest时没有任何默认值,浏览器不会显示任何内容。为什么会这样?
有谁可以帮我解决这个问题?我正在掌握有关异步和同步请求的一些知识。这些与上面的代码有什么不同呢?我错过了什么吗?
答案 0 :(得分: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);
}