提问者:小点点

使用服务器端的jQuery Datatable管道-未加载数据


我正在处理jQueryDataTable,并尝试使用服务器端处理实现管道特性。(以下代码与下面jQuery站点中建议的代码相同)

https://datatables.net/examples/server_side/pipeline.html

实际情景

我的实现仅在数据部分有所不同,其中我的数据是对象数组,但根据参考资料,数据来自ajax。。

来自RESTAPI的我的Ajax响应::

{
"status": true,
"data": [{
    "dbid": "xyz",
    "name": "QA Pt",
    "email": "a+123@gmail.com",
    "isactive": true,
    "Datecreated": "2018-06-04",
    "lastmodified": "2018-06-04",
    "newfields": {
        "firstname": "QA",
        "lastname": "Pt",
        "viewonlyadmin": "no",
        "usertype": 0
    },
    "userid": "85097428"
}, {
    "dbid": "xyz",
    "name": "QA Pt",
    "email": "a+123@gmail.com",
    "isactive": true,
    "Datecreated": "2018-06-04",
    "lastmodified": "2018-06-04",
    "newfields": {
        "firstname": "QA",
        "lastname": "Pt",
        "viewonlyadmin": "no",
        "usertype": 0
    },
    "userid": "85097428"
}],
"recordsTotal": 597,
"recordsFiltered": 597,
"draw": 1
}

管道功能和分页部分完美工作,但表中的数据总是显示为“找不到匹配的记录”

当我尝试调试代码,在缺点回调函数'设置'对象-

下面是该表的屏幕截图。

情景二

我尝试的另一个修复方法是传递json。在ajax成功函数中,将数据发送到drawcallback函数,而不是drawcallback(json)。在这种情况下,数据显示在表中,但分页部分失败。PFB屏幕截图。

有人知道为什么这些数据没有被应用到表中吗?寻找一些关于解决这个问题的帮助...


共1个答案

匿名用户

假设您试图从API返回json,如下所示。

return Json(new
            {
                // this is what datatables wants sending back
                draw = 1,
                recordsTotal = result.Count(),
                recordsFiltered = 10,
                data = result
            });

只需将此更改为返回Json(结果);因此您的json结果看起来像

    [{
  "Latitude": 18.00,
  "Longitude": 23.00,
  "Name": "Pune"
}, {
  "Latitude": 14.00,
  "Longitude": 24.00,
  "Name": "Mumbai"
}, {
  "Latitude": 34.004654,
  "Longitude": -4.005465,
  "Name": "Delhi"
}, {
  "Latitude": 23.004564,
  "Longitude": 23.007897,
  "Name": "Jaipur"
}]

现在,在您的ajax成功中,使datatables如下所示。使用ajax success的原因是,假设您在到服务器的一次往返中获得了所有数据。

$.ajax({                    
                url: "Your API Url",
                type: "GET",
                contentType: "application/json; charset=utf-8",
                datatype: JSON,
                success: function (result) {
                    var my_columns = [];
                    $.each(result[0], function (key, value) {
                        var my_item = {};
                        my_item.data = key;
                        my_item.title = key;
                        my_columns.push(my_item);
                    });

                    $('#table1').DataTable({
                        "data": result,
                        "columns": my_columns
                    });
                }
            });

相关问题