我有一个网页用作txt
在 Unix 上更新的文件的实时日志。我正在向 PHP 文件发送 Ajax 请求,该文件读取文件并将其文本返回到textarea
.
我希望textarea
每 1 秒更新一次。
javascript代码是:
<script>
var myVar;
function readLogAjax()
{
var account = document.getElementById("account").value;
var env = document.getElementById("env").value;
var type = document.getElementById("type").value;
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("result").value = xmlhttp.responseText;
console.log('Updated textarea');
}
}
xmlhttp.open("GET","ajax_file_reader.php?account="+account+"&env="+env+"&type="+type ,true);
console.log('Sending request');
xmlhttp.send();
console.log('Sent request');
}
function startRead()
{
myVar = setInterval(readLogAjax,1000);
}
function stopRead()
{
clearInterval(myVar);
}
</script>
textarea
:_
<textarea style="margin: 2px; height: 335px; width: 661px;" name="result" id="result" cols="80" rows="10" onclick=""></textarea>
我有两个按钮来启动和停止日志:
<button type="button" id="generate" onclick="startRead()">Run EVT</button>
<button type="button" id="generate" onclick="stopRead()">Stop EVT</button>
这个简单的代码在 Chrome 上运行良好,并且textare
每隔一秒更新一次,我可以在 Chrome 的网络监视器中看到 Ajax 调用:
但是在 IE8 上(我必须在 IE8 上运行),textarea
只有在我第一次进入页面并按下Run EVT后才会更新。
我认为这是一个缓存问题,所以我添加了这些元标记:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
但这没有帮助,所以我猜这是 AJAX 调用的某种问题,我添加了控制台调用,我在 IE8 控制台上看到了这些结果:
...
...
LOG: Sending request
LOG: Sent request
LOG: Updated textarea
LOG: Sending request
LOG: Sent request
LOG: Updated textarea
...
...
我还尝试了一些修改,setInterval
例如setInterval("readLogAjax();",1000);
和setInterval(function(){readLogAjax()},1000);
。但这没有帮助
我不知道IE8的问题是什么...