JavaScript setInterval只运行一次

时间:2013-06-26 17:29:49

标签: javascript html ajax timer setinterval

我试图让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>

有人有想法吗?

1 个答案:

答案 0 :(得分:5)

我认为您的浏览器正在缓存。您只需获取一次数据,然后从缓存中提供下一个请求。因此应该重复调用refreshLog,只是以下调用对页面没有任何影响,因为它是从缓存中提供的。

在网址中附加一些独特的部分,例如?=<timestamp>

xmlhttp.open("GET", location + '?=' + new Date().getTime(), nonblocking);