如何通过制表符中的 ajax 加载列
How load columns via ajax in tabulator
我正在尝试使用以下方法在制表符 4.5 中加载列:
var table = new Tabulator("#tables", {
ajaxURL:"worker.php?data",
ajaxRequestFunc:queryRealm,
cellEdited:cEdit,
history:true,
clipboard:true,
//autoColumns:true,
clipboardPasteAction:"replace",
layout:"fitData",
columns:getColumns,
});
function getColumns(){
return new Promise(function(resolve, reject){
$.ajax({
url: "worker.php?columns",
success: function(data){
resolve(data);
},
error: function(error){
reject(error);
}
})
});
}
但我收到错误消息:
tabulator.min.js:4 Uncaught TypeError: this.options.columns.slice is not a function
at t.u._clearObjectPointers (tabulator.min.js:4)
at t.u._create (tabulator.min.js:4)
at new t (tabulator.min.js:4)
at (index):84
请告诉我,如何通过 ajax 将列加载到制表符中?
您不能将异步函数传递给列参数。它需要一个列数组。
因此,与其将 getColumns
传递到列选项中,不如从 getColumns
中获取值,然后将其传递到制表符选项中。
我重新整理了一些你的代码,我相信这应该可以。
function getColumns(){
return new Promise(function(resolve, reject){
$.ajax({
url: "worker.php?columns",
success: function(data){
resolve(data);
},
error: function(error){
reject(error);
}
})
});
}
getColumns().then((columns) => {
var table = new Tabulator("#tables", {
ajaxURL:"worker.php?data",
ajaxRequestFunc:queryRealm,
cellEdited:cEdit,
history:true,
clipboard:true,
//autoColumns:true,
clipboardPasteAction:"replace",
layout:"fitData",
columns:columns,
});
});
我正在尝试使用以下方法在制表符 4.5 中加载列:
var table = new Tabulator("#tables", {
ajaxURL:"worker.php?data",
ajaxRequestFunc:queryRealm,
cellEdited:cEdit,
history:true,
clipboard:true,
//autoColumns:true,
clipboardPasteAction:"replace",
layout:"fitData",
columns:getColumns,
});
function getColumns(){
return new Promise(function(resolve, reject){
$.ajax({
url: "worker.php?columns",
success: function(data){
resolve(data);
},
error: function(error){
reject(error);
}
})
});
}
但我收到错误消息:
tabulator.min.js:4 Uncaught TypeError: this.options.columns.slice is not a function
at t.u._clearObjectPointers (tabulator.min.js:4)
at t.u._create (tabulator.min.js:4)
at new t (tabulator.min.js:4)
at (index):84
请告诉我,如何通过 ajax 将列加载到制表符中?
您不能将异步函数传递给列参数。它需要一个列数组。
因此,与其将 getColumns
传递到列选项中,不如从 getColumns
中获取值,然后将其传递到制表符选项中。
我重新整理了一些你的代码,我相信这应该可以。
function getColumns(){
return new Promise(function(resolve, reject){
$.ajax({
url: "worker.php?columns",
success: function(data){
resolve(data);
},
error: function(error){
reject(error);
}
})
});
}
getColumns().then((columns) => {
var table = new Tabulator("#tables", {
ajaxURL:"worker.php?data",
ajaxRequestFunc:queryRealm,
cellEdited:cEdit,
history:true,
clipboard:true,
//autoColumns:true,
clipboardPasteAction:"replace",
layout:"fitData",
columns:columns,
});
});