【问题标题】:How do I filter an output of an AJAX call in Datatables?如何在 Datatables 中过滤 AJAX 调用的输出?
【发布时间】:2016-04-15 10:39:21
【问题描述】:

我已经成功设置了一个 Datatables 插件,创建了一个新表并使用 AJAX 调用填充了它的内容:

var table= $("#mytable").DataTable({

    ajax: "list.json",
    columns: [
        {"data": "name"},
        {"data": "location"},
        {"data": "date"}
    ]
});

上面的示例输出了我正在导入的 JSON 文件中的所有项目。

我想要的是过滤输出,例如仅使用位置为“英格兰”的用户的数据填充表格。

Datatables 是一个非常强大的插件,所以我迷路了。任何帮助,将不胜感激。

【问题讨论】:

  • 或者在服务器端渲染过滤的JSON文件更好?
  • DataTable 可以使用filter api,如果您使用的是旧数据表,则可以使用fnFilter api。基本上,如果您要渲染少量数据,最好在客户端使用插件功能进行排序/搜索/过滤,并且在服务器端获取每个特定位置的用户是没有意义的时间地点变化。但是,如果您要返回成千上万的用户,最好按照您的建议使用服务器过滤。
  • 感谢吉塔兹!我会试一试。
  • @jeetaz,这是不正确的。 filter() API 方法不会更新表格的外观。来自docs此方法不应与用于在DataTable中搜索记录的search()混淆
  • @Gyrocode.com 你是对的,DataTable.filter api返回通过过滤测试的数组项,它不会更新DataTable。但是,对于旧版 dataTable.fnFilter,它仍然是一个有效的场景,oTable = $('#myTable').dataTable(); oTable.fnFilter("^England$", 3, true); 可能已经更新了具有预期结果的表,并且类似于 .DataTable.search() api。但是,感谢您对 DataTable.filter() 的澄清

标签: javascript jquery ajax datatable datatables


【解决方案1】:

你有几个选择:

  • 如果您不打算显示“英格兰”以外的位置,请在服务器端过滤数据
  • 使用ajax.dataSrc 选项或xhr 事件处理通过Ajax 接收的数据
  • 使用searchsearchCols 选项定义初始搜索,全局或特定列:

    var table= $("#mytable").DataTable({
       ajax: "list.json",
       columns: [
          {"data": "name"},
          {"data": "location"},
          {"data": "date"}
       ],
       searchCols: [
          null,
          { "search": "England" },
          null
       ]
    });
    

    有关代码和演示,请参阅 this jsFiddle

【讨论】:

  • 感谢您的详尽回答。快速提问,如果我的专栏有 怎么办。有没有可能通过这种数据进行搜索?
  • @Deka87,在我的回答中更正了代码。我认为它会工作得很好,请参阅jsfiddle.net/fmq6vko0
猜你喜欢
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 2021-02-22
相关资源
最近更新 更多