我试图让HTML页面每秒使用JavaScript的setInterval函数更新textarea,其中包含来自文本文件的内容。但是,setInterval调用中的函数似乎只运行一次。
使用Javascript:
// Send a GET request to the given location
function sendRequest(location, nonblocking) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", location, nonblocking);
xmlhttp.send();
return xmlhttp.responseText;
}
// Refresh the communication log
function refreshLog() {
document.getElementById("comm_log").value = sendRequest("src/log.txt", false);
}
window.setInterval(refreshLog, 1000);
请求不是异步的,因为文本文件永远不会很长,这是我想要快速拼凑的东西。
HTML:
<html>
<head>
<style type="text/css">
textarea {
width: 98%;
height: 80%;
resize: none;
font-family: "Courier New";
}
</style>
<script type="text/javascript" src="src/script.js"></script>
</head>
...
<textarea id="comm_log" readonly></textarea>
...
</html>
有人有想法吗?
答案 0 :(得分:5)
我认为您的浏览器正在缓存。您只需获取一次数据,然后从缓存中提供下一个请求。因此应该重复调用refreshLog
,只是以下调用对页面没有任何影响,因为它是从缓存中提供的。
在网址中附加一些独特的部分,例如?=<timestamp>
。
xmlhttp.open("GET", location + '?=' + new Date().getTime(), nonblocking);