通过 Javascript 将不断变化的文本文件数据输出到网页上
Outputting constantly changing text file data onto a webpage via Javascript
我有一个 python 脚本,它每 2 秒更新我的 output.txt 文件。我能够将 txt 文件数据输出到网页,但由于某种原因,在我重新启动服务器之前它不会更新。我想要做的是让网页每 2 秒更新一次 output.txt 文件数据。这是我现在正在使用的:
var reader = new XMLHttpRequest() || new ActiveXObject('MSXML2.XMLHTTP');
function loadFile() {
reader.open('get', 'output.txt', true);
reader.onreadystatechange = displayContents;
reader.send(null);
reader.onreadystatechange = outputData();
}
function displayContents() {
if(reader.readyState==4) {
var el = document.getElementById('main');
el.innerHTML = reader.responseText;
}
}
function outputData() {
var refresh = 2000;
update = setTimeout('loadFile()', refresh);
}
我试图做的是让 outputData 函数每 2 秒调用一次 loadFile 函数,这意味着重新读取 output.txt 文件的更新数据。任何帮助将不胜感激,因为我是网络编程的新手。如果重要的话,我 运行 Apache 在 Raspberry Pi 3 上创建网页。
编辑:这是我的 python 代码,以防它可能导致问题。
#!/usr/bin/env python
import time
from datetime import datetime
var = datetime.now().time()
while True:
print(var)
with open("output.txt", "w") as txtfile:
print(var, file=txtfile)
var = datetime.now().time()
time.sleep(2)
您正在立即调用 outputData()
,而不是引用要在 readystateschange
事件中调用的函数。移除
reader.onreadystatechange = outputData();
在 displayContents
调用中调用 outputData()
。在 window
load
事件中调用 loadFile()
。
window.onload = function() {
var reader = new XMLHttpRequest() || new ActiveXObject('MSXML2.XMLHTTP');
function loadFile() {
reader.open('get', 'output.txt', true);
reader.onload = displayContents;
reader.send(null);
}
function displayContents() {
if (reader.readyState == 4) {
var el = document.getElementById('main');
el.innerHTML += reader.responseText + "<br>";
outputData();
}
}
function outputData() {
var refresh = 2000;
update = setTimeout(loadFile, refresh);
}
loadFile()
}
我有一个 python 脚本,它每 2 秒更新我的 output.txt 文件。我能够将 txt 文件数据输出到网页,但由于某种原因,在我重新启动服务器之前它不会更新。我想要做的是让网页每 2 秒更新一次 output.txt 文件数据。这是我现在正在使用的:
var reader = new XMLHttpRequest() || new ActiveXObject('MSXML2.XMLHTTP');
function loadFile() {
reader.open('get', 'output.txt', true);
reader.onreadystatechange = displayContents;
reader.send(null);
reader.onreadystatechange = outputData();
}
function displayContents() {
if(reader.readyState==4) {
var el = document.getElementById('main');
el.innerHTML = reader.responseText;
}
}
function outputData() {
var refresh = 2000;
update = setTimeout('loadFile()', refresh);
}
我试图做的是让 outputData 函数每 2 秒调用一次 loadFile 函数,这意味着重新读取 output.txt 文件的更新数据。任何帮助将不胜感激,因为我是网络编程的新手。如果重要的话,我 运行 Apache 在 Raspberry Pi 3 上创建网页。
编辑:这是我的 python 代码,以防它可能导致问题。
#!/usr/bin/env python
import time
from datetime import datetime
var = datetime.now().time()
while True:
print(var)
with open("output.txt", "w") as txtfile:
print(var, file=txtfile)
var = datetime.now().time()
time.sleep(2)
您正在立即调用 outputData()
,而不是引用要在 readystateschange
事件中调用的函数。移除
reader.onreadystatechange = outputData();
在 displayContents
调用中调用 outputData()
。在 window
load
事件中调用 loadFile()
。
window.onload = function() {
var reader = new XMLHttpRequest() || new ActiveXObject('MSXML2.XMLHTTP');
function loadFile() {
reader.open('get', 'output.txt', true);
reader.onload = displayContents;
reader.send(null);
}
function displayContents() {
if (reader.readyState == 4) {
var el = document.getElementById('main');
el.innerHTML += reader.responseText + "<br>";
outputData();
}
}
function outputData() {
var refresh = 2000;
update = setTimeout(loadFile, refresh);
}
loadFile()
}