繁体   English   中英

每隔5分钟使用javascript从txt文件中读取数据

[英]Reading data from txt file using javascript, every 5 min

我正在尝试制作显示当前临时温度的网站,并允许我根据需要设置温度。 要读取temp,我使用raspberry pi零和python代码将每5分钟的临时值保存到.txt文件中。 问题是我需要从该文件中读取我网站上的当前临时文件,比如说5分钟。 我可以用:

<head> <meta http-equiv="Refresh" content="s" /> </head>

但它看起来不是一个好选择,所以我虽然可以使用javascript并从文件中读取数据。 不幸的是,无论我在.txt文件中更改并刷新Web,此函数只能工作一次,输出仍然相同(看起来它将以前的数据保存到某种全局变量)。

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();
?>

在设置属性id =“textarea”之后,您需要在某个时间间隔内更新.txt文件以进行保存更改

//use jOuery
var interval = setInterval(function(){ myFunction() },5*60*1000); // 1000=1 second

function myFunction(){
    $.get('server_address',{param1:1,param2:2},function(response){
        //if is textarea or input
        $('#textarea').val(response);
        //if is block div, span or something else
        //$('#textarea').text(response);
    });
}

server_address - 是你读取文件内容的页面,并打印它们....如果它是php,那么使用类似代码的文件“write.php”

<?php
echo(file_get_contents('some.txt'));

{param1:1,param2:2} - 是对象,带有params,你发送给“server_address”的内容,如{action:'read',file:'some.txt'}或其他

响应 - 是“server_address”页面中打印的文本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM