通过Javascript将不断变化的文本文件数据输出到网页上

时间:2016-12-06 07:06:51

标签: javascript python html apache raspberry-pi3

我有一个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文件的更新数据。任何帮助将不胜感激,因为我是网络编程的新手。如果重要的是我在Raspberry Pi 3上运行Apache来创建网页。

编辑:这是我的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)

1 个答案:

答案 0 :(得分:1)

您正在立即调用outputData(),而不是引用要在readystateschange事件中调用的函数。删除

reader.onreadystatechange = outputData();

outputData()电话中致电displayContents。在loadFile() window活动中致电load

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()
}

plnkr http://plnkr.co/edit/EKh2DsmxtbzMYMlt1F4V?p=preview