Установка асинхронного XMLHttpRequest не работает - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь выучить Ajax, теперь я не знаю, как настроить XMLHttpRequest Asynchronous. Я пробовал другой пост о AJAX, но не могу понять это. Извините, если об этом уже спрашивали.

В следующем коде я пытаюсь console.log объект XMLHttpRequest. я связал его с локальным текстовым файлом в той же папке.

проблема в том, что когда для параметра request.open установлено значение true, это не работает. Он работает только тогда, когда установлен в false, но я прочитал, что это не асинхронный.

Я использую XAMPP для сервера. Кроме того, я попробовал это на другой серверной школе.

Если есть какие-либо вопросы, пожалуйста, спросите меня. спасибо

var request;
if(window.XMLHttpRequest){
    request = new XMLHttpRequest();
}else{
    request = new ActiveXObject("Mircosoft.XMLHTTP");
}
//this open function 
request.open('GET', 'text.txt', true);
request.send();
if(request.status===200){
console.log(request);
document.writeln(request.responseText);
}

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Вы должны дождаться ответа с функцией request.onreadystatechange

var request;
if(window.XMLHttpRequest){
    request = new XMLHttpRequest();
}else{
    request = new ActiveXObject("Microsoft.XMLHTTP");
}


request.onreadystatechange = function(){
   if(request.readyState == 4 && request.status == 200)
    {
      document.writeln(request.responseText);
    }
}

//this open function 
request.open('GET', 'text.txt', true);
request.send();
0 голосов
/ 16 мая 2019

Весь смысл того, что он асинхронный, заключается в том, что он не блокирует движок JavaScript, пока не получен ответ. Итак, с вашим текущим кодом вы пытаетесь прочитать ответ до того, как он существует.

Вам необходимо использовать обработчик событий для обработки данных после их поступления.

function processData() {
    document.writeln(this.responseText);
}

var request = new XMLHttpRequest();
request.open('GET', 'text.txt');
request.addEventListener("load", processData);
request.send();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...