设置为XMLHttpRequest异步不起作用

时间:2019-05-16 12:50:11

标签: javascript ajax xmlhttprequest

我现在正在尝试学习Ajax,但我不知道如何设置XMLHttpRequest异步。我已经尝试过其他一些有关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 :(得分:0)

异步的全部目的是,直到响应到达,它才会锁定JavaScript引擎。因此,使用当前代码,您将尝试在响应存在之前读取它。

您需要使用事件处理程序来处理数据。

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

var request = new XMLHttpRequest();
request.open('GET', 'text.txt');
request.addEventListener("load", processData);
request.send();

答案 1 :(得分:0)

您必须等待带有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();