如何在Tabulator 4.1中通过AJAX设置列

时间:2019-01-02 15:22:24

标签: tabulator

我正在尝试创建一个制表器4.1表,该表具有将通过AJAX加载的列。最好不使用jQuery,尽管如果差异很大也可以使用。我已经尝试了以下方法,但无济于事:

table.setColumns("ajaxr.php?act=GetTabuColumns&vals=data");

$("#display").tabulator("setColumns", "ajax.php?act=GetTabuColumns&vals=data");

我还尝试了使用纯Javascript和jQuery ajax请求分别执行ajax请求。该日期将作为json编码的数组加载,但会引发以下错误。

Uncaught TypeError: t.forEach is not a function
at t.setColumns (tabulator.min.js:2)
at t.c.setColumns (tabulator.min.js:4)
at XMLHttpRequest.xmlhttp.onreadystatechange ((index):71)

我对javascript很陌生,所以我可能犯了一个基本错误。应该怎么做?

我的基本设置如下:

function datatablemaker(table){

    if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                var newcolumns = this.responseText;

                var table = new Tabulator("#display", {
            columns:[
            {title:'ID', field:'ID', sorter:'number'},...
            {title:'Create Time', field:'Create Time', sorter:'string'}
            ],
    });
table.setData("ajax.php?act=GetTabuData&vals=data");
table.setColumns(newcolumns);

            }
        };
        xmlhttp.open("GET",'ajax.php?act=GetTabuColumns&vals=data',true);
        xmlhttp.send();


};
document.getElementById("View").addEventListener("click", datatablemaker);

编辑:

如果我使用JSON.parse,它可以正常工作,但是我知道应该有更好的方法来做到这一点。即

var newcolumns = JSON.parse(this.responseText);

1 个答案:

答案 0 :(得分:0)

目前没有构建此功能的方法,该功能将在本月晚些时候的4.2版本中发布。

同时发出ajax请求并将列数组传递到 setColumns 函数是最好的方法。