开发者问题收集

如何改变 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