我正在尝试制作一个显示当前家中温度并允许我根据需要设置温度的网站。要读取温度,我使用 raspberry pi 零和 python 代码将每 5 分钟的温度保存到 .txt 文件中。问题是我需要在 5 分钟内从该文件读取我网站上的当前温度。我可以使用:
<head>
<meta http-equiv="Refresh" content="s" />
</head>
但它看起来不是一个好的选择,所以我认为我可以使用 javascript 并从文件中读取数据。不幸的是,无论我在 .txt 文件中更改什么并刷新网络,此功能只工作一次,输出仍然相同(看起来它将以前的数据保存到某种全局变量)。
function readTextFile()
{
var rawFile = new XMLHttpRequest();
rawFile.open("GET", 'text.txt', true);
rawFile.onreadystatechange = function ()
{
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status == 0)
{
var allText = rawFile.responseText;
alert(allText);
}
}
}
rawFile.send(null);
}
在这张图片的左侧,有来自 txt 文件的数据(使用 php),在警报处理程序中是使用 javascript 和提交按钮的数据。这些数据应该是一样的。
所以问题是:当 .txt 文件动态变化时,我可以读取它吗?如果是这样,我该怎么做或使用什么功能来做到这一点?我不太了解javascript。 我将非常感谢您的帮助。
最佳答案
使用 XHR 在定义的时间间隔内获取记录并不是一个好的解决方案。我建议您使用 JavaScript EventSource API。您可以使用它以定义的时间间隔接收 text/event-stream
。您可以在此处了解更多信息 -
https://developer.mozilla.org/en-US/docs/Web/API/EventSource
对于你的应用,你可以这样做——
JavaScript -
var evtSource = new EventSource('PATH_TO_PHP_FILE');
evtSource.onmessage = function(e) {
//e.data contains the fetched data
}
PHP代码-
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$myfile = fopen("FILE_NAME.txt", "r");
echo "data:". fread($myfile,filesize("FILE_NAME.txt"))."\n\n";
fclose($myfile);
flush();
?>
关于javascript - 使用 javascript 从 txt 文件中读取数据,每 5 分钟一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44368310/