我在服务器端使用 ASP.net MVC。基本上我有一个模型类,我通常 JsonConvert.SerializeObject(DataTableModel)
并将其发送回 datatables.js
。转换后的 json 数据如下所示;
"{
"draw":1,
"recordsTotal":2,
"recordsFiltered":2,
"data":[
{"PONumber":"PO 1234","SupplierNumber":"SUP 123","SupplierName":"Supplier 1","ProductDescription":"SUND Salt & Pep Grinder 6/210g","POQuantity":"6","POUOM":"12","BatchQuantity":"18","BatchUOM":"24","ShelfDate":"2016/02/24","ExpireDate":"2016/03/15","CreatedDate":"2016/02/23","CreatedBy":"HORIZON.COM\\mohammadi","POReceiveDate":"2016/02/20","Notes":"Note 1"},
{"PONumber":"PO 1236","SupplierNumber":"SUP 124","SupplierName":"Supplier 2","ProductDescription":"365 Cinnamon Strick Whol 6/36g*","POQuantity":"6","POUOM":"12","BatchQuantity":"18","BatchUOM":"24","ShelfDate":"2016/02/25","ExpireDate":"2016/03/31","CreatedDate":"2016/02/23","CreatedBy":"HORIZON.COM\\mohammadi","POReceiveDate":"2016/02/25","Notes":"Note 2"}
]
}"
它获取数据正常。但如果我不将其转换为 jquery.dataTables.js>> _fnBuildAjax.baseAjax
>> success
到以下 (第 9 - 15 行之间)
它不显示数据;收到错误 can't find lenght of undefined
,我得到了。
var baseAjax = {
"data": data,
"success": function (json) {
var error = json.error || json.sError;
if ( error ) {
_fnLog( oSettings, 0, error );
}
var x = JSON.parse(json);
oSettings.json = x;
callback(x);
//oSettings.json = json;
//callback( json );
},
"dataType": "json",
"cache": false,
"type": oSettings.sServerMethod,
"error": function (xhr, error, thrown) {
var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] );
if ( $.inArray( true, ret ) === -1 ) {
if ( error == "parsererror" ) {
_fnLog( oSettings, 0, 'Invalid JSON response', 1 );
}
else if ( xhr.readyState === 4 ) {
_fnLog( oSettings, 0, 'Ajax error', 7 );
}
}
_fnProcessingDisplay( oSettings, false );
}
};
以下是我与数据表绑定(bind)的js代码。
var table = $('#example').DataTable({
"processing": true,
"serverSide": false,
"ajax": {
"url": "/Home/GetDateLogData",
"type": "POST"
},
"columns": [
{ "data": "PONumber" },
{ "data": "SupplierNumber" },
{ "data": "SupplierName" },
{ "data": "ProductDescription" },
{ "data": "POQuantity" },
{ "data": "POUOM" },
{ "data": "BatchQuantity" },
{ "data": "BatchUOM" },
{ "data": "ShelfDate" },
{ "data": "ExpireDate" },
{ "data": "CreatedDate" },
{ "data": "CreatedBy" },
{ "data": "POReceiveDate" },
{ "data": "Notes" }
]
});
在ajax
部分我也尝试过dataSrc
,但没有成功。
"dataSrc": function ( json ) {
var x = JSON.parse(json);
return x;
},
我的问题,是否有任何内置扩展程序可以做到这一点,或者我如何为此制作类似原型(prototype)的东西?我提前谢谢你。
最佳答案
这正是 dataSrc
的目的。它不起作用,因为您需要返回一个数组项目,即数据
:
dataSrc: function ( json ) {
json = JSON.parse(json);
return json.data;
},
PS:为什么"type": "POST"
?
关于javascript - 将 JSON 字符串转换为 JSON 对象,这样我就不需要更改基础 jquery.dataTables.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586760/