您可能知道,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处理的响应?
发布于 2016-11-11 10:18:11
你能在dataSrc试试这个吗?此解决方案基于此link。
"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;
}
发布于 2016-11-11 08:45:33
问题是您没有解析响应。首先,将ajax
调用分离,并在解析后将该响应分配给aaData
(datatable支柱)。
并确保您必须指定要在表中显示的所有列,请参阅代码中的"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 },
]
});
https://stackoverflow.com/questions/40543943
复制相似问题