Pop
Pop

Reputation: 525

Field name is in JSON but datatables don't recognise it?

The error message is as below:

Requested unknown parameter 'emPONumber' for row 0, column 0

But emPONumber is in the JSON, why datatables still prompt this error?

<script type="text/javascript">
    $(document).ready(function () {
        var tableId = 'tablePurchaseOrders';
        var table = $('#' + tableId).DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": {
                url: 'http://localhost/ControlTower2WebAPI/api/PurchaseOrder/GetAllUploadedPurchaseOrders',
                type: 'GET',
                data: function (data) {
                    //debugger;
                    var model = {
                        draw: data.draw,
                        start: data.start,
                        length: data.length,
                        columns: data.columns,
                        search: data.search,
                        order: data.order
                    };
                    return model;
                },
                failure: function (result) {
                    debugger;
                    alert("Error occurred while trying to get data from server: " + result.sEcho);
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    debugger;
                    alert("Error occurred while trying to get data from server!");
                },
                dataSrc: function (json) {
                    var _data = JSON.stringify(json.Data);
                    debugger;
                    return _data;
                }
            }
            ,
            "columns": [
                { "data": "emPONumber", title: "emPONumber" },
                { "data": "ASMPONumber", title: "ASMPONumber" },
                { "data": "material", title: "material" }
            ]
        });
    });
</script>

json in dataSrc: function (json):

{"ContentEncoding":null,"ContentType":null,"Data":{"draw":1,"recordsTotal":1,"recordsFiltered":1,"data":[{"emPONumber":"EM1234567","ASMPONumber":"A741000013","material":"26-00010","quantity":5,"UOM":"EA","asmPOQuantity":5,"createBy":"m","ASMPOYear":2018,"ASMPOMonth":6,"ASMPOVendor":"10008"}]},"JsonRequestBehavior":1,"MaxJsonLength":null,"RecursionLimit":null}

json (_data) return by ajax in dataSrc:

{
    "draw":1,   
    "recordsTotal":1,
    "recordsFiltered":1,
    "data":
        [{
            "emPONumber":"EM1234567",
            "ASMPONumber":"A741000013",
            "material":"26-00010",
            "quantity":5,
            "UOM":"EA",
            "asmPOQuantity":5,
            "createBy":"m",
            "ASMPOYear":2018,
            "ASMPOMonth":6,
            "ASMPOVendor":"10008"
        }]
}

Upvotes: 2

Views: 67

Answers (1)

Gyrocode.com
Gyrocode.com

Reputation: 58880

Try

dataSrc: function (json) {
   for(key in json.Data){ json[key] = json.Data[key]; }
   delete json['Data'];

   return json.data;
}

Upvotes: 1

Related Questions