如何将函数用作带数据表的ajax的数据源?我在具有内置数据库的电子应用程序中使用它,我在其中调用函数,将结果写入data.json文件,然后使用该文件作为源:
populateData(); //gets data from db and writes output to data.json
let table = $('#accTransaction').DataTable({
dom: 'Bfrtip',
select: {
style: 'single'
},
ajax: '../data.json',
...
相反,如果我可以像这样直接调用db函数但是它不起作用......那就更有效了......不是有效的URL。
let table = $('#accTransaction').DataTable({
dom: 'Bfrtip',
select: {
style: 'single'
},
ajax: getData(),
...
我意识到我可以制作源数据:newData,'但后来我放弃了调用table.ajax.reload
setInterval( function () {
table.ajax.reload( null, false ); // user paging is not reset on reload
console.log('reloading..')
}, 3000 );
如何将函数用作带有数据表而不是url或文件路径的ajax的数据源?
答案 0 :(得分:1)
不知道它是否值得,但你可以将ajax调用本身包装到一个函数中,并在该函数中使用destroy
标志重新初始化该表。从下面的演示:
function reload(url) {
$.ajax({
url: url,
type: 'get',
dataType: 'json'
})
.done(function(json) {
console.log(json) //check the reponse
return $('#example').DataTable({
destroy: true,
data : json.data,
columns: [
{ data: 'name', title: 'Name' },
{ data: 'position', title: 'Position' }
]
})
})
}
现在您只需按
刷新dataTable即可reload('url/to/json')
您可以将网址更改为任何内容,只需记住正确更改columns
定义(或动态构建)。可以使用间隔来完成:
setInterval(function() {
reload('https://api.myjson.com/bins/38p4r')
}, 1000)
演示 - >的 http://jsfiddle.net/zefL681c/ 强>