【问题标题】:auto update dynatable with AJAX/JSON使用 AJAX/JSON 自动更新可动态化
【发布时间】:2015-01-18 17:12:55
【问题描述】:

我现在有点迷茫,因为我的代码似乎可以工作,但我的表不感兴趣。 xD

我正在将我的数据库中的数据加载到一个表中,我希望它每三秒“自动更新”一次。我的 JSON 数据是正确的,并且 js-console 显示更新的数据。但是我的表格不想显示它,所以我必须刷新整个页面。然而,这不是我想做的。

这是我的代码 (HTML+JS):

<script>
$(document).ready(function() {
    setInterval(function() {``
  $.ajax({
      url: "myStuff.php",
      success: function(data) {
          console.log(data);

          myRecords = $.parseJSON(data);
          $("#dynatable").dynatable({

              dataset: {
                  records: myRecords
              }
          });
      }
  });
    }, 3000);
});


<table id="dynatable">
    <thead>
    <th>test1</th>
    <th>test2</th>
    </thead>
    <tbody>
    </tbody>
</table>

PHP:

$response = array();

    while ($zeile = mysqli_fetch_array($db_erg, MYSQL_ASSOC)) {


    $response [] = array(
        "test1" => $zeile['wasd'],
        "test2" => $zeile['wasdf']
    );

}

echo json_encode($response);

当我将数据添加到我的数据库时,返回的 JSON 数据会更新,我会在 js 控制台中看到它。问题是我的表格不想显示它,它只显示“旧”数据。

有解决这个问题的建议吗?

------------------------------------------ -----------------

编辑:

我现在明白了! This 帮我解决了我的问题。谢谢您的帮助! :) 这是我的代码:

$(document).ready(function() {
    setInterval(function() {
        $.ajax({
            url: "myStuff.php",
            success: function(data) {
                console.log(data);

                var myRecords = $.parseJSON(data);

                var dynatable = $('#dynatable').dynatable({
                    dataset: {
                        records: myRecords
                    }
                }).data('dynatable');

                dynatable.settings.dataset.originalRecords = myRecords;
                dynatable.process();
            }
        });
    }, 3000);
});

【问题讨论】:

  • 我不知道可使用但很少有表 jquery 插件需要“更新”触发器来显示新结果
  • 移除 parseJson,在官方文档中他们直接使用 JSON

标签: javascript php html ajax json


【解决方案1】:

这段代码也可以更新表格。

<script>
$(document).ready(function() {
    var mytable = $("#dynatable");
    setInterval(function() {
        $.ajax({
            url: "do.php",
            success: function(data) {
                myRecords = $.parseJSON(data);
                mytable.dynatable({
                    dataset: {
                        records: myRecords
                    }
                });
                mytable.data('dynatable').settings.dataset.records = myRecords;
                mytable.data('dynatable').dom.update();
                console.log(data);
            }
        });
    },
    1000);
});
</script>

【讨论】:

  • 谢谢你们的帮助,但它不起作用。数据在那里并已更新,但如果我删除 parseJSON,则不会显示数据,因为 dynatable 需要一个数组来显示数据(我猜)。没有 parseJSON 代码不起作用,表格在表格中的任何地方都显示“未定义”
  • 只是想快速输入,上面不起作用的原因是因为 dynatable 认为settings.dataset.records 集合是当前表视图的工作数据集(所以在排序、过滤之后,分页等),所以它使用settings.dataset.originalRecords作为原始源,应用其操作,然后将结果保存到settings.dataset.records,覆盖之前的任何内容。如果您想更改表的源数据集,请替换 setting.dataset.originalRecords 并调用 process(),其余的由您处理。
猜你喜欢
  • 2014-12-01
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 1970-01-01
相关资源
最近更新 更多