Javascript Ajax保持站点处于加载状态

Javascript Ajax保持站点处于加载状态,javascript,jquery,ajax,readystate,Javascript,Jquery,Ajax,Readystate,我一直在想如何让这一切顺利进行 var request; if(window.XMLHttpRequest){ request= new XMLHttpRequest(); }else{ request = new ActiveXObject("Microsoft.XMLHTTP"); } var handleStateChange = function () { switch (request.readyState) { case 0 : // UN

我一直在想如何让这一切顺利进行

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内容不会显示在web上

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

我认为这与readyState有关,当它达到4时,responseText为空。但是如何让它显示内容和console.log

提前感谢您的时间:)

但使用它,console工作时不会在网站上显示任何结果

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

更改为:

document.write(request.responseText); 
或者更好:

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


@FrebinFrancis:为什么这是好的,而这个xmlhttprequest是坏的?除了语法方面的原因之外,还有什么其他原因。@metalsearth为什么需要这个:
handleStateChange
。使用Ajax帮助程序时,您可以对XML http请求进行更多的控制,因为他们已经为您做了。@metalsearth您已经注释掉了外部的一个,但另一个也在内部:
request.onreadystatechange=handleStateChange@FrebinFrancis正如我提到的,我是Ajax新手。我刚开始学习基础知识。我不知道ajax助手,但感谢您提到它。我来看看。似乎很有帮助:)这是一个很好的信息。非常感谢。我甚至没有注意到。我的问题似乎是由萤火虫引起的。很多人都有这个问题。现在可以了。我希望它能保持这种状态:)
document.body.textContent = request.responseText; // use this response is just text