我正在处理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屏幕截图。
有人知道为什么这些数据没有被应用到表中吗?寻找一些关于解决这个问题的帮助...
假设您试图从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
});
}
});