无法使用服务器端分页将数据加载到数据表

时间:2017-06-13 11:39:08

标签: javascript jquery ajax datatable pagination

我试图为我的表实现服务器端分页概念(jQuery(v1.12.4),datatable(v1.10.15))

根据数据表服务器端分页文档

我已将 serverSide 分页处理设为true,并将 sPaginationType 与ajax一起指定。

Custom Data Source Property article中,提到我们需要使用dataSrc Option作为字符串来获取来自不同源属性的数据,在本例中为demo但它可以是任何值,包括嵌套使用标准点缀Javascript对象表示法的属性。

我根据上面的点使用了dataSrc,即“dataSrc”:“data”,基于我的json响应。

但是没有加载数据。

我的表只加载批准按钮(我在列部分中定义)其余列是空的。 - 召集数据不会在表格中呈现。

Refer Output 2 image

由于我使用了 deferLoading ,因此第一页返回空数据。参考输出1图像。

我已经提到了以下所有文章

Custom data source property dataSrc and pagination issue

Datatables server side processing pagination issue

代码片段如下所示,请帮忙

$('#vschildtable').DataTable({
        "language": {
            "processing": "Please
            wait - LOADING SCAN Result...", "
            emptyTable " : "
            Currently no
            data found in this project " }, "
            bJQueryUI " : true, "
            paging " :
            true,
            "sPaginationType": "full_numbers",
            "processing ": true,
            "serverSide": true,
            "columns": [{
                    "defaultContent": "",
                    "visible": false
                }, {
                    "defaultContent": "",
                    "visible": false
                }, {
                    "defaultContent": ""
                }, {
                    "defaultContent": ""
                }, {
                    "defaultContent": ""
                }, {
                    data: null,
                    defaultContent: ' <
                        button type = "button"
                    class = "btn-approve label label-link bg-green " > Approve < /button>
                    ' } ], "deferLoading" : 57, "ajax" : { "url" : "emppage?empID=" +
                    encodeURIComponent(empID) + "&projectId=" +
                    encodeURIComponent(projectID) + "&subProjectId=" +
                    encodeURIComponent(subProjectID) + "&pageNo=" +
                    encodeURIComponent(offset),
                    type: 'POST',
                    datatype: "jsonp",
                    "dataSrc": "data"
                }
            });

Json的回应:

    [{
   "message":"SUCCESS",
   "data":"{\"data\":\[{\"projectId\":1,\"subProjectId\":1,\"empID\":765,\"empName\":\"Arjun\",\"empIDVersion\":\"1%3A4.1.4\",\"fkempID\":7781,\"tmpempID\":354999,\"noOfDept\":1,\"rowNo\":1,\"totalnoOfDept\":1},{\"projectId\":1,\"subProjectId\":1,\"empID\":765,\"empName\":\"Arjun\",\"empIDVersion\":\"4.0.18.1\",\"fkempID\":7781,\"tmpempID\":355000,\"noOfDept\":1,\"rowNo\":2,\"totalnoOfDept\":1},{\"projectId\":1,\"subProjectId\":1,\"empID\":765,\"empName\":\"Arjun\",\"empIDVersion\":\"4.2.1\",\"fkempID\":7781,\"tmpempID\":355001,\"noOfDept\":1,\"rowNo\":3,\"totalnoOfDept\":1}\]}"
}]

1 个答案:

答案 0 :(得分:0)

据我所知,服务器返回的数据中缺少信息。在服务器端模式下运行时,DataTables需要服务器提供一些特定数据(drawrecordsFiltered等)。您可以查看here

此外,您应该将data属性添加到columns数组中的每个对象,指定您希望在该列中呈现的数据的名称,即:

columns:[
    { data:'projectId'   }
    { data:'subPorjectId'}
    ...
]

这告诉DataTables在哪一列中显示哪些数据。

希望它有所帮助!