2015-09-06 36 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/