首页 > 解决方案 > JQuery Datatables Ajax 动态列

问题描述

我正在尝试在其中使用 ajax 绘制数据表。如果我手动创建列的对象数组,它可以工作,但是当从 initComplete 创建列时,出现错误“无法读取属性 aDataSort”,我认为 initComplete 在绘制表格后工作,因为在cols数组中具有结束数据表初始化后的值。如何在 ajax 响应后创建列对象数组?

var columnArrayManual = [{"data": "column1"},{"data": "column1"}];
var cols = [];
tblClients = $("#tblClients").DataTable(
            {
                "ajax": {
                    "url": "/index.php?controller=controller&act=controllerMethod&ajx=1",
                    "dataSrc": "data",
                    type: 'POST',
                    "data": function (d) {
                        var a = arguments[0];
                        return a;
                    }
                },
                "initComplete": function (settings, json) {
                    $.each(json.data[0], function (i, item) {
                      var col = {"data" : i};
                      cols.push(col);
                    })
                },
                "columns": cols
            }
         )

标签: javascriptjquerydatatables

解决方案


我试图从 dataSrc 中的 ajax 响应中填充数据,而不是数据表初始化

"ajax": {
                    "url": "/index.php?controller=controller&act=controllerMethod&ajx=1",
                    "dataSrc": function ( json ) {
                        // I have created object array here
                        return json.data ;
                    }, 
                    "type": 'POST',
                    "data": function (d) {
                        var a = arguments[0];
                        return a;
                    }
                },

它奏效了!


推荐阅读