【问题标题】:Without clearing the existing records on Ajax call - DataTables不清除 Ajax 调用的现有记录 - DataTables
【发布时间】:2012-12-17 10:05:14
【问题描述】:

我正在使用 DataTables 插件从 mysql 表中检索数据并显示它们。为此,我使用他们的服务器端处理代码来检索所有数据。到目前为止,它工作正常。现在,我每分钟检查一次数据库是否插入了新记录。如果在数据库中插入了新记录,我将调用数据表函数。当时它清除整个记录并显示带有新插入记录的记录,因此它看起来像整个页面加载。我们可以不清除现有数据吗?或者我们可以在不清除记录的情况下将新插入的记录附加到现有记录中吗?或者我该如何处理这个?

这是我的代码

$('#example').dataTable({
                    "bProcessing": false,
                    "bServerSide": true,
                    "sPaginationType": "full_numbers",
                    "iDisplayLength":10,
                    "bDeferRender": true,
                    "bFilter": false,
                    "bSort": false,
                    "bInfo": true,
                    "sAjaxSource": #PHP_PATH#/json_data"
                   });

【问题讨论】:

  • 如果它是单行/几行,您可以尝试使用 jquery ajax 手动获取它们并使用fnAddData手动添加
  • @Daniel- 很可能它将是单行/两行。 bt 在他们的文档中fnAddData (datatables.net/ref#fnAddData) 仅适用于客户端处理。
  • 你使用 bServerSide 处理做什么?
  • @LearneR,嗯......你可以试试,看看排序/过滤器是否考虑到新添加的行......如果是这样,我想它没问题......(最坏的情况你可以尝试使用带有虚拟值的fnUpdate 来更新表数据源)

标签: php jquery ajax datatables


【解决方案1】:

对于您想要实现的目标,我还建议您调查 SignalR - 这太棒了!

您使用bServerSide 处理什么?

第一次生成页面并将其发送到客户端时,数据表会使用当时的最新数据呈现。之后,在随后的每个 ajax 调用中,如果您的服务器只向您发送新数据,您所要做的就是在成功/完成回调中调用以下方法。

function AddRow(row) {
    $('#example').dataTable().fnAddData([
        row[0],
        row[1],
        row[2]]);
}

$.ajax({
    //...
    success: function(data) {
        //assuming data = ["COL.1", "COL.2", "COL.3"]
        AddRow(data);
    }
    //...
});​

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多