jquery - DataTables根据输入json对象获取字段标题

标签 jquery datatables

我正在尝试从 json 对象创建 DataTables 对象(以下 this 示例)。我可以假设输入是一个对象数组,每个对象都具有相同的键集。

我想创建一个表格,从输入的第一行动态获取其列标题。

请参阅下面的 js 函数

 function populateDataTable(json_obj) {
/*extract fields from ajax return*/
var columns_obj = [];
for (var key in json_obj[0]) {
  columns_obj.push({
    'data': key
  })
}
console.log(columns_obj);

/*draw html table container*/
var html_table = '<table id="example" class="display" width="100%" cellspacing="0"><thead><tr>';
for (var i = 0; i < columns_obj.length; i++) {
  html_table += '<th>' + columns_obj[i]['data'] + '</th>';
}
html_table += '<tr></thead></table>';
console.log(html_table);
$('#query_output').html(html_table);
console.log('columns_obj:', columns_obj.length, 'ajax data length:', Object.keys(json_obj[0]).length);
console.log($('#query_output th').length);
alert('pause');
$('#query_output table').DataTable({
  data: json_obj,
  columns: columns_obj
});

}

在我的 fiddle 中,与我的预期相反,数据完全分配给单个字段标题“名称”。请注意,运行它会扰乱 fiddle 的沙箱。

JS Fiddle

最佳答案

我让数据表比你做了更多的工作,并想出了这个:

http://jsbin.com/zeminu/edit?html,js,console,output

    $(function () {

        /* user  run query click event*/
        $('#run_query').click(function () {
            populateDataTable(sample_ajax);
        });

        function populateDataTable(json_obj) {
            console.log(json_obj)
            /*extract fields from ajax return*/
            var keys = Object.keys(json_obj[0]);
            var columns_obj = [];
            $.each(keys, function (i, it) {
                columns_obj[i] = { data: it, title: it };
            });


            /*draw html table container*/
            var html_table = '<table id="example" class="display" width="100%" cellspacing="0"><thead></thead><tbody></tbody></table>';

            $('#query_output').html(html_table);

            $('#query_output table').DataTable({
                data: json_obj,
                columns: columns_obj
            });
        }
    });

关于jquery - DataTables根据输入json对象获取字段标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43106673/

相关文章:

javascript - 取消选择数据表隐藏复选框

jQuery Datatables 分页字体大小

jquery - 数据表在 chrome 中不起作用

javascript - 如何在 JQuery Flot 中制作可点击的线?

javascript - 数据表完成渲染后触发事件

javascript - 使用 Moment.js 和排序插件在数据表中按日期 (dd.mm.YYYY) 排序时出现问题

datatables - 重新加载后如何设置dataTable的css?

javascript - `appendTo()` 在哪里可以与 `htmlString` 一起使用?

带有 MVC 的 Javascript 在没有浏览器调试器的情况下无法在 IE 中运行

jquery - 选择子元素而不选择父元素