2015-09-06 4 views
0

Я новичок в ajax и следую за учебником Lynda Javascript и Ajax. Вот проблема, с которой я столкнулся.Асинхронный и синхронный XMLHttpRequest в 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); 

} 

Мой вопрос, когда я делаю Синхронный XMLHttpRequest, давая аргумент ложной (на request.open()) , мой браузер отображает «HELLO WORLD» 100 раз в соответствии с кодом. Но как я пытаюсь выполнить асинхронный XMLHttpRequest, давая аргумент true или ничего по умолчанию, браузер ничего не отображает. Почему это так?

Может ли кто-нибудь помочь мне в этом? Я понимаю некоторые асинхронные и синхронные запросы. Что они должны делать с приведенным выше кодом, действующим по-другому? Я что-то упустил?

ответ

2

Асинхронные вызовы не предотвращают последующее выполнение кода. В вашем примере консоль.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/

Смежные вопросы