在jQuery数据表中搜索

时间:2015-06-16 15:45:57

标签: jquery jquery-datatables

我正在使用最新的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'}]}

1 个答案:

答案 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\),以演示实现。