繁体   English   中英

将JSON字符串转换为JSON对象,因此无需在基本jquery.dataTables.js中进行更改

[英]Convert JSON string to JSON object so I don't need to change in the base jquery.dataTables.js

我在服务器端使用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转换为以下内容(between line 9 - 15) _fnBuildAjax.baseAjax (between line 9 - 15) ,则不会显示数据; 得到一个错误,找不到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 );
        }
    };

以下是我的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;
},

我的问题是,有没有内置的扩展器可以做到这一点,或者我该如何制作类似这样的原型? 我提前谢谢你。

这正是dataSrc的目的。 它不起作用,因为您需要返回一个项目数组 ,即data

dataSrc: function ( json ) {
  json = JSON.parse(json);
  return json.data; 
},

PS:为什么"type": "POST"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM