【发布时间】:2019-01-02 15:22:23
【问题描述】:
我正在尝试创建一个包含将通过 AJAX 加载的列的制表符 4.1 表。最好不使用 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);
【问题讨论】:
标签: tabulator