【问题标题】:Filter AJAX Response for DataTable过滤 DataTable 的 AJAX 响应
【发布时间】: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
  • 你能解释一下吗?

标签: javascript jquery json ajax datatables


【解决方案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 drawidea_id 任何你想要的

更多详情https://datatables.net/reference/option/ajax.data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2014-09-24
    • 2017-08-03
    相关资源
    最近更新 更多