2016-04-15 51 views
0

我已经成功地建立了一个数据表插件,创建一个新表,并使用AJAX调用的内容填充它:如何在Datatables中过滤AJAX调用的输出?

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

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

上面的例子有输出所有来自JSON文件我进口的项目。

我想要的是过滤输出,例如,只填写那些位置为“英格兰”的用户的数据。

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

+0

或者是在服务器端渲染过滤的JSON文件更好吗? – sdvnksv

+1

您可以使用[filter](https://datatables.net/reference/api/filter()#Examples)API for DataTable,如果您使用的是旧数据表,您可以使用[fnFilter](http:// legacy .datatables.net/api#fnFilter)api。基本上,如果你渲染的是少量的数据,那么在客户端使用插件功能进行排序/搜索/过滤会很不错,而且在服务器端去获取位置特定的用户是没有意义的实时位置变化。但是,如果您要返回数千个用户,那么按照您的建议使用服务器筛选将会很好。 – jeetaz

+0

谢谢jeetaz!我会给它一个镜头。 – sdvnksv

回答

1

您有几种选择:

  • 过滤器在服务器端的数据,如果你不打算表现出比“英格兰”的其他位置
  • 使用或者ajax.dataSrc选项操纵通过Ajax接收到的数据或xhr事件
  • 使用searchsearchCols选项定义初始搜索,无论是在全球或特定列:

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

    请参阅this jsFiddle的代码和演示。

+0

的澄清感谢您的彻底解答。快速的问题,如果我的专栏有其他的问题,我该怎么办?>或者。是否有可能通过这种数据进行搜索? – sdvnksv

+0

@ Deka87,在我的答案中更正了代码。我认为它会工作得很好,请参阅https://jsfiddle.net/fmq6vko0/ –

+0

谢谢。我做了同样的=) – sdvnksv