jQuery Datatables使用函数作为ajax数据源而不是path或url

时间:2016-08-24 01:39:15

标签: jquery ajax datatables

如何将函数用作带数据表的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的数据源?

1 个答案:

答案 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/