0

JavaScript の setInterval 関数を使用して、HTML ページにテキスト ファイルのコンテンツでテキストエリアを毎秒更新させようとしています。ただし、setInterval 呼び出し内の関数は 1 回しか実行されないようです。

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>

誰にもアイデアがありますか?

4

1 に答える 1

5

ブラウザがキャッシュしていると思います。データを一度だけ取得すると、次のリクエストはキャッシュから提供されます。したがって、refreshLogを繰り返し呼び出す必要があります。ページはキャッシュから提供されているため、次の呼び出しだけではページに影響しません。

のような一意の部分を URL に追加します?=<timestamp>

xmlhttp.open("GET", location + '?=' + new Date().getTime(), nonblocking);
于 2013-06-26T17:33:22.730 に答える