1

假设我有 3 台计算机根据它们每 5 分钟在线还是离线写入 mysql 数据库。

我将这些信息显示在一个简单的 html 表中的网站上,并使用 php 读取 mysql 数据库。

输出是这样的:

<table>
    <th>Computer portfolio</th>
    <tr>
        <td>Computer Name</td>
        <td>Status</td>
        <td>Last Connected</td>
    </tr>
    <tr>
        <td>Computer 1</td>
        <td>Okay</td>
        <td>2013-07-10 00:15:25</td>
    </tr>
    <tr>
        <td>Computer 2</td>
        <td>Down</td>
        <td>2013-07-08 00:15:25</td>
    </tr>
    <tr>
        <td>Computer 3</td>
        <td>Okay</td>
        <td>2013-07-10 00:17:25</td>
    </tr>
</table>

php 代码非常简单,只是从 db 返回一个 select * 然后遍历数组。

我的问题很简单,我如何合并淘汰赛以每 5 分钟从数据库重新加载结果以刷新页面上的项目。

4

1 回答 1

1

CodePen 演示

function getJSON(callback) {
    // Get an array from the server
    // callback(data)
}

创建一个带有可观察数组的视图模型。然后创建一个拉取数据并覆盖可观察对象的刷新方法。因为数组中的所有项都依赖于根数组,所以不需要它们是可观察的。

function ViewModel(){
  var self = this;
  self.items = ko.observableArray([]);

  self.refresh = function(){
    getJSON(function(data){
      self.items(data);
      console.log(data);

    });
  }

刷新一次,然后以所需的时间间隔(例如 5 分钟)再次刷新。

  self.refresh();
  setTimeout(self.refresh, 5 * 60 * 1000);
}

ko.applyBindings(app = new ViewModel);

jQuery 提供了非常简单的 AJAX 方法,例如$.getJSON

function getJSON(callback) {
    $.getJSON('tabledata.php', callback);
}

此外,还有一个名为Live的插件,它可以在多个客户端之间实时同步数据。但是它依赖于 NodeJS,所以它可能不是一个好的解决方案(主要是在这里为未来的谷歌人发布它。

于 2013-07-11T01:31:27.337 回答