javascript - 如何将动态表转换为jquery数据表?

标签 javascript jquery json ajax datatable

我正在从json data动态创建一个HTML表格。然后我想将该表转换为数据表。但是当我尝试这样做时,我不断收到一条错误消息: 未捕获类型错误:无法读取未定义的属性“mData”

我的jquery是:

$(document).ready(function() {
    $('#action-button').click(function() {
                $.ajax({
                    url: 'https://api.myjson.com/bins/1oaye',
                    data: {
                        format: 'json'
                    },
                    error: function() {
                        $('#info').html('<p>An error has occurred</p>');
                    },
                    dataType: 'json',
                    success: function(data) {
                        // EXTRACT VALUE FOR HTML HEADER. 
                        var col = [];
                        for (var i = 0; i < data.length; i++) {
                            for (var key in data[i]) {
                                if (col.indexOf(key) === -1) {
                                    col.push(key);
                                }
                            }
                        }

                        // CREATE DYNAMIC TABLE.
                        var table = document.createElement("table");


                        // CREATE HTML TABLE HEADER ROW USING THE EXTRACTED HEADERS ABOVE.

                        var tr = table.insertRow(-1);                   // TABLE ROW.

                        for (var i = 0; i < col.length; i++) {
                            var th = document.createElement("th");      // TABLE HEADER.
                            th.innerHTML = col[i];
                            tr.appendChild(th);
                        }

                        // ADD JSON DATA TO THE TABLE AS ROWS.
                        for (var i = 0; i < data.length; i++) {

                            tr = table.insertRow(-1);

                            for (var j = 0; j < col.length; j++) {
                                var tabCell = tr.insertCell(-1);
                                tabCell.innerHTML = data[i][col[j]];
                            }
                        }

                        // FINALLY ADD THE NEWLY CREATED TABLE WITH JSON DATA TO A CONTAINER.
                        var divContainer = document.getElementById("showData");
                        divContainer.innerHTML = "";
                        divContainer.appendChild(table);

                        // convert it to a data table
                        table.setAttribute("id", "example");
                        $('#example').DataTable();

                    },
                    type: 'GET'
                });
            });
        });

如何创建动态表或将其从 json 转换为数据表?

JSFiddle showing the issue

最佳答案

快速浏览一下 DataTable 代码,看起来可能的原因是您没有放置 <th><thead>部分。目前他们位于<tbody>内。

这是更新的 fiddle ... https://jsfiddle.net/8some9a0/1/

关于javascript - 如何将动态表转换为jquery数据表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39968563/

相关文章:

android - Android 中带有 JSON 的 ExpandableListView - 列表错误

javascript - 如何仅显示/隐藏列表中的一个选定元素

javascript - 在辅助屏幕上定位弹出窗口

javascript - 如何将菜单的子菜单更改为每个父菜单的底部

javascript - 确定上一页上单击的内容

javascript - 可以淡出 div 边框吗?

javascript - Ember - 子组件通过父组件更新来自查询参数的属性

jquery - Bootstrap 模式不会显示

java - JSON 到 Java 类

javascript - 如何以非 Ajax 方式使用 jQuery(或 Javascript)从 API 调用中获取 JSON 结果?