如何改变 ASP.NET 中 DataTables 处理的 ajax 响应?
2016-11-11
1149
您可能知道,ASP.NET 使用
d
参数给出 ajax 响应。我尝试使用以下方法更改此设置:
dataSrc: function (json) {
return json.d.data;
}
但是当我运行它时,它显示
jquery.dataTables.js:4108 Uncaught TypeError: Cannot read property 'length' of undefined(…).
正如您在我在本帖中附加的图片上所见。我检查了那部分并得出结论
dataSrc
并没有真正改变所有的响应。
这是我对 DataTables 的 ajax 选项所做的:
dataTable: {
ajax: {
type: 'POST',
url: window.location.href + '/GetData',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
dataSrc: function (json) {
return json.d.data;
},
..... //other options
}
那么,还有其他选项可以改变 DataTables 将处理的所有响应吗?
2个回答
您可以在 dataSrc 中尝试此操作。此解决方案基于此 链接 。
"dataSrc": function (data) {
var json = $.parseJSON(data.d);
var myData = {};
myData.draw = parseInt(json.draw);
myData.recordsTotal = parseInt(json.recordsTotal);
myData.recordsFiltered = parseInt(json.recordsFiltered);
myData.data = json.data;
return myData.data;
}
saf21
2016-11-11
问题是您没有解析响应。首先,将
ajax
调用分开,并在解析后将该响应分配给
aaData
(datatable prop)。
并确保您必须指定要在表中显示的所有列,请参阅代码中的
"aoColumns": [{ "mData": "YourColumnName1" }]
。希望这对您有所帮助
var ResponseData = CallAjaxMethod(YourUrl, "");//This will make Ajax call and get response
ResponseData = JSON.parse(ResponseData); //This will pars your response
//'#tblId' this is table id where you want to show your table
$('#tblId').DataTable({
"bProcessing": true,
"bDestroy": true,
"bStateSave": true,
"aaData": ResponseData,//Its your response
"aoColumns": [
{ "mData": "YourColumnName1" },
....
{ "mData": "YourColumnNamen },
]
});
Bharat
2016-11-11