5

我在我的项目中使用 Datatable 1.9.2。我通过 AJAX 在其中显示申请人列表。还有一个过滤器表单,用于过滤数据。一切正常,但问题是如果我过滤记录并且数据库没有返回数据,那么数据表会在 POPUP 中生成错误。有人可以指导我如何使用数据表处理空 ajax 响应,如何处理空数据集。

下面是我正在使用的代码

    $('#applicants_list').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sPaginationType": "bootstrap",                 
"sDom": '<"H"Cfr>t<"F"ip>',
"oColVis": {
     "activate": "mouseover",
     "aiExclude": [ 10 ],
     "sAlign": "left"
},
"bFilter": false,
"sAjaxSource": script.php,
"aoColumns": [                               
       {"bSortable": true }, // attachments
       {"bSortable": true }, //Subject Line
       {"bSortable": true }, // Date Sent
       {"bSortable": true }, // File Name
       {"bSortable": false },
       {"bSortable": false },
       {"bSortable": true },
       {"bSortable": true },
       {"bSortable": true },
       {"bSortable": false }
],
"aaSorting": [[0, 'desc']]
} );
4

4 回答 4

6

当过滤器返回记录为空时,只需从服务器/ajax 响应返回以下数据,它将显示空记录消息。

echo '{
    "sEcho": 1,
    "iTotalRecords": "0",
    "iTotalDisplayRecords": "0",
    "aaData": []
}';
于 2013-03-16T13:30:15.080 回答
3
echo json_encode(array('aaData'=>'')); 

为我工作。

于 2013-11-11T02:16:24.307 回答
1

对于那些正在寻找 ASP.NET 解决方案的人,这里有一个使用 JSON.NET 的示例:

JObject jObj = new JObject(
    new JProperty("draw", 0),
    new JProperty("recordsTotal", 0),
    new JProperty("recordsFiltered", 0),
    new JProperty("data", new JArray())
);

return Content(jObj.ToString(Formatting.None), "application/json");

此处其他答案中的参数适用于旧版本的 DataTables,但我认为它仍然可能与它们向后兼容,至少 aaData 是从我在代码中看到的内容处理的。

于 2016-10-23T19:15:43.290 回答
1

尝试使用每个列对象的 defaultContent 属性...

PD:不需要双引号

columns: [                               
       {bSortable: true, defaultContent: '' }, // attachments
       {bSortable: true, defaultContent: '' }, //Subject Line
       {bSortable: true, defaultContent: '' }, // Date Sent
       {bSortable: true, defaultContent: '' }, // File Name
       {bSortable: false, defaultContent: '' },
       {bSortable: false, defaultContent: '' },
       {bSortable: true, defaultContent: '' },
       {bSortable: true, defaultContent: '' },
       {bSortable: true, defaultContent: '' },
       {bSortable: false, defaultContent: '' }
],
于 2018-11-02T15:13:07.030 回答