过滤 DataTable 的 AJAX 响应
Posted
技术标签:
【中文标题】过滤 DataTable 的 AJAX 响应【英文标题】:Filter AJAX Response for DataTable 【发布时间】:2019-09-08 02:29:31 【问题描述】:我有一个 DataTable 函数。 parentObjData
来自其他地方,应过滤此 DataTable
以仅包含 idea_id
等于 parentObjData
的记录。
function BuildExampleDataTable(parentObjData, tableCounter)
oInnerTable = $("#example_" + tableCounter).DataTable(
autoWidth: true,
serverSide: true,
processing: true,
ajax:
url: "/platform/api/?format=datatables",
type: "get",
data: function (d)
var searchData =
idea_id: parentObjData,
draw: d.draw,
length: d.length,
start: d.start,
order: d.order,
columns: d.columns,
orderbyfield: d.columns[d.order[0].column].data
;
d.sData = JSON.stringify(searchData);
return d.sData;
,
columns: [
data: 'idea_id', name: "idea_id.id",
data: 'comment' ,
],
);
/platform/api/?format=datatables
回复:
"data":["idea_id":1,"comment":"test comment","idea_id":1,"comment":"test comment again","idea_id":2,"comment":"another test comment?"],"recordsFiltered":3,"recordsTotal":3,"draw":1
parentObjData
正确到达函数,但未过滤 DataTable(它显示所有三个记录)。如何更改 ajax
调用的 data
部分以过滤 DataTable?
【问题讨论】:
return
来自 callback 函数没有什么意义。根据收到的数据构建您的数据表。
对,我可以使用searchCols
进行过滤,但我不希望idea_id
出现在数据表中
来自d.sData
。
你能解释一下吗?
【参考方案1】:
这是我的代码,你可以关注它
"ajax":
"url": contextRoot + "manage/callbackMessage/datatables",
"data": function (d)
var req =
"dir": "",
"colName": "",
"draw": d.draw,
"length": d.length,
"start": d.start
;
var queryReq =
"idea_id": parentObjData
;
var columns = d.columns;
var order = d.order;
if (order.length > 0)
var orderFirst = order[0];
var colIndex = orderFirst.column;
req.dir = orderFirst.dir;
req.colName = columns[colIndex].name || columns[colIndex].data;
return $.extend(, req, queryReq);
在您的服务器代码中,您可以解析 dir
colName
draw
和 idea_id
任何你想要的
更多详情https://datatables.net/reference/option/ajax.data
【讨论】:
以上是关于过滤 DataTable 的 AJAX 响应的主要内容,如果未能解决你的问题,请参考以下文章
将参数传递给 AJAX 以绑定 DataTable 不起作用
搜索之后,p:dataTable将不会更新,除非调用两次搜索或者输入和清除过滤器中的某些内容