簡體   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