我正在尝试创建一个制表器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);
答案 0 :(得分:0)
目前没有构建此功能的方法,该功能将在本月晚些时候的4.2版本中发布。
同时发出ajax请求并将列数组传递到 setColumns 函数是最好的方法。