我正在使用最新的jQuery数据表,目前我能够将数据输入到表中,但每次我尝试搜索时我都看不到对表的更改
以下是我的代码
init: function(){
$('#paginatedData').DataTable({
"processing": true,
"serverSide": true,
"ajax": {
url: "/bugbounty/viewreports",
dataSrc: "reportList"
},
"columns": [
{"data": "reportStatus"},
{"data": "reportID", "render": function(data, type, full, meta){
return '<a href="reportsummary">'+ data +'</a>';
}},
{"data": "summary"},
{"data": "lastUpdatedDate"},
{"data": "createdDate"}
]
});
}
我是否需要再设置其他值,默认搜索不应设置为true?
编辑:这是我的JSON回复
{reportList:[{reportID:'EIBBP-460', eBay用户的ID: ' ', reportStatus:'新', 摘要:'由Raj创建的BugBounty报告', lastUpdatedDate:'2015-06-16 04:27', createdDate:'2015-06-16 04:27', paypalLoginID:'raaj@paypal.com'}, {reportID:'EIBBP-459', eBay用户的ID: ' ', reportStatus:'新', 摘要:'由Raj创建的BugBounty报告', lastUpdatedDate:'2015-06-16 04:25', createdDate:'2015-06-16 04:25', paypalLoginID:'raaj@paypal.com'}]}
答案 0 :(得分:0)
您会混淆客户端和服务器端处理模式。来自manual:
DataTables有两种不同的处理数据模式(数据的排序,搜索等):
客户端处理 - 预先加载完整数据集,并在浏览器中完成数据处理。
服务器端处理 - 为每个表重绘创建一个Ajax请求,只返回每个显示所需的数据。数据处理在服务器上执行。
在两种模式下,都可以从服务器加载数据,但名称暗示将执行处理(分页/排序/过滤)的位置。
您启用了服务器端处理模式("serverSide":true
),应在服务器端进行搜索和过滤。由于您的脚本没有编程,所以这就是您没有看到订购/过滤工作的原因。
您的JSON响应对于客户端处理有效,但对于服务器端处理无效,see manual用于正确的响应结构。
解决方案1:禁用服务器端处理模式
如果表中没有多行,则可以禁用服务器端处理模式。要启用客户端,请省略serverSide
选项或将其设置为false
。在这种情况下,请使用以下代码:
$('#paginatedData').DataTable({
"ajax": {
url: "/bugbounty/viewreports",
dataSrc: "reportList"
},
"columns": [
{"data": "reportStatus"},
{"data": "reportID", "render": function(data, type, full, meta){
return '<a href="reportsummary">'+ data +'</a>';
}},
{"data": "summary"},
{"data": "lastUpdatedDate"},
{"data": "createdDate"}
]
});
解决方案2:添加服务器端处理
或者,如果表中有许多行,您仍然可以使用服务器端处理模式来提高性能,则需要根据提供的参数调整脚本以返回正确的数据结构。
DataTables发行版包含server_processing.php
文件夹中的示例PHP脚本(ssp.class.php
和\examples\server_side\scripts\
),以演示实现。