0

我一直在试图弄清楚如何使这项工作。

var request;

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


var handleStateChange = function () {
   switch (request.readyState) {
      case 0 : // UNINITIALIZED
      case 1 : // LOADING
      case 2 : // LOADED
      case 3 : // INTERACTIVE
      break;
      case 4 : // COMPLETED
      break;
      default: alert("error");
   }
}


/*request.onreadystatechange=handleStateChange;*/
request.onreadystatechange = function(){
    if((request.status === 200) && (request.readyState === 4)){
        console.log(request);
        document.writeln(request.responseText); 
    }

}
request.open('GET','data.txt');
request.send();

我在stackoverflow中发现了类似的问题,但是我还没有弄清楚为什么它会这样(我是Ajax的新手)。

所以问题是,当我让request.open('GET','data.txt');页面保持在加载模式并且console.log 没有显示任何内容时。

我四处搜索并在stackoverflow中找到了这个解决方案request.onreadystatechange=handleStateChange;

这似乎正在解决问题。不幸的是,它覆盖了request.onreadystatechange = function(){}. 控制台工作,data.txt 内容不会显示在网络上。

如果我将其注释掉,内容会显示在网络上,但页面会再次加载。

我认为它与 readyState 有关,并且当它达到 4 时,responseText 为空。但是我怎样才能让它显示内容和console.log?

提前感谢您的时间:)

4

1 回答 1

0

但是控制台可以正常工作而不会在网站上显示任何结果

根据您的评论,我可以建议您使用错误的方法。javascript中没有writeln方法,建议您使用.write()(虽然不推荐)

改为:

document.write(request.responseText); 

或更好:

document.body.innerHTML = request.responseText; // use this response contains html tags

或者:

document.body.textContent = request.responseText; // use this response is just text
于 2015-09-24T10:14:29.853 回答