如何在Datatables中过滤AJAX调用的输出?
问题描述:
我已经成功地建立了一个数据表插件,创建一个新表,并使用AJAX调用的内容填充它:如何在Datatables中过滤AJAX调用的输出?
var table= $("#mytable").DataTable({
ajax: "list.json",
columns: [
{"data": "name"},
{"data": "location"},
{"data": "date"}
]
});
上面的例子有输出所有来自JSON文件我进口的项目。
我想要的是过滤输出,例如,只填写那些位置为“英格兰”的用户的数据。
Datatables是一个非常强大的插件,所以我迷上了这个。任何帮助,将不胜感激。
答
您有几种选择:
- 过滤器在服务器端的数据,如果你不打算表现出比“英格兰”的其他位置
- 使用或者
ajax.dataSrc
选项操纵通过Ajax接收到的数据或xhr
事件 -
使用
search
或searchCols
选项定义初始搜索,无论是在全球或特定列:var table= $("#mytable").DataTable({ ajax: "list.json", columns: [ {"data": "name"}, {"data": "location"}, {"data": "date"} ], searchCols: [ null, { "search": "England" }, null ] });
请参阅this jsFiddle的代码和演示。
或者是在服务器端渲染过滤的JSON文件更好吗? – sdvnksv
您可以使用[filter](https://datatables.net/reference/api/filter()#Examples)API for DataTable,如果您使用的是旧数据表,您可以使用[fnFilter](http:// legacy .datatables.net/api#fnFilter)api。基本上,如果你渲染的是少量的数据,那么在客户端使用插件功能进行排序/搜索/过滤会很不错,而且在服务器端去获取位置特定的用户是没有意义的实时位置变化。但是,如果您要返回数千个用户,那么按照您的建议使用服务器筛选将会很好。 – jeetaz
谢谢jeetaz!我会给它一个镜头。 – sdvnksv