Javascript读取文本文件问题

时间:2012-09-01 15:22:40

标签: javascript onreadystatechange

我有一个驻留在服务器上的文本文件(“sample.txt”),其内容随机间隔变化(250毫秒到10秒之间)。下面的脚本每隔半秒读取一次该文本文件,并在底部的div元素“cont”中显示文本。一切都很完美......除了大约10%的时间文本无法显示,即使1)文本文件包含文本; 2)request.readyState == 4; 3)request.status == 200.任何人都可以解释为什么会发生这种情况?任何帮助将不胜感激。

<body bgcolor=Black>

<script type='text/JavaScript'>

var int=self.setInterval("getText()",500);

function getText() {
   makerequest("sample.txt?v="+Math.random(),"cont");
   }

function makerequest(serverPage, tagID) {
   var request = get_XmlHttp();
   request.open("GET", serverPage);
   request.send(null);
   request.onreadystatechange = function() {
   if (request.readyState == 4) {
      if (request.status == 200) {
         document.getElementById(tagID).innerHTML = request.responseText; }
      } 
   }
}

function get_XmlHttp() {
   var xmlHttp = null;
   if(window.XMLHttpRequest) {
      xmlHttp = new XMLHttpRequest();
   }
   else if(window.ActiveXObject) {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
   return xmlHttp;
}

</script>

<div id="cont">

</div>

</body>

1 个答案:

答案 0 :(得分:0)

在某些情况下,服务器可能会很快返回txt文件。

您在将结果绑定到函数之前发出HTTP请求(使用.send()),因此如果服务器立即响应,浏览器将不知道如何处理它。

尝试重新安排功能:

function makerequest(serverPage, tagID) {
    var request = get_XmlHttp();
    request.open("GET", serverPage);
    request.onreadystatechange = function() {
        if (request.readyState = 4) {
            if (request.status == 200) {
                document.getElementById(tagID).innerHTML = request.responseText;
            }
        } 
    }
    request.send(null);
}