我现在正在尝试学习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);
}
答案 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();