2015-09-06 79 views
0

我是新来的AJAX和我下面的琳达“JavaScript和Ajax” tutorial.Here的问题我也碰到过。异步和同步的XMLHttpRequest在阿贾克斯

我有一个名为“数据”文本文件,它具有文本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参数做同步的XMLHttpRequest(上request.open()) ,我的浏览器按代码显示“HELLO WORLD”100次。但是,当我尝试通过给出参数true或nothing作为默认参数来做异步XMLHttpRequest时,浏览器不显示任何东西。为什么?

任何人都可以请帮我在这?我抓的异步和同步requests.What已经得到了这些上面用不同作用的代码怎么办?有些知识我是否错过了什么?

回答

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); 
} 

http://jsfiddle.net/75eLfwz1/