0

我有一个文本文件(“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>
4

1 回答 1

0

在某些情况下,服务器返回 txt 文件的速度可能过快。

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

尝试重新安排功能:

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);
}
于 2012-09-01T16:35:20.867 回答