我有一个驻留在服务器上的文本文件(“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>
答案 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);
}