Datatables 运行数据表';更新表时的ajax()函数

Datatables 运行数据表';更新表时的ajax()函数,datatables,Datatables,我有一个DataTables,我在其中对AJAX返回的数据执行其他操作,例如: 我使用的源的格式如下: { "total_in_month": 1636, "data": [ {"total_on_date": 47, "date": "01-01-2020", "externals": 1}, {"total_on

我有一个DataTables,我在其中对AJAX返回的数据执行其他操作,例如:

我使用的源的格式如下:

{
    "total_in_month": 1636, 
    "data": [
        {"total_on_date": 47, "date": "01-01-2020", "externals": 1}, 
        {"total_on_date": 47, "date": "02-01-2020", "externals": 1}, 
        {"total_on_date": 48, "date": "03-01-2020", "externals": 1}, 
        {"total_on_date": 48, "date": "04-01-2020", "externals": 1}, 
        {"total_on_date": 49, "date": "05-01-2020", "externals": 1}, 
        {"total_on_date": 48, "date": "06-01-2020", "externals": 3}, 
        {"total_on_date": 47, "date": "07-01-2020", "externals": 3}, 
        {"total_on_date": 48, "date": "08-01-2020", "externals": 1}, 
        ...
    ]
}
一切正常,即正确填充我的数据表,并在加载页面时正确更新span
total\u in\u month

但是,我希望动态更改表中的数据,但也要更改表外的“total_in_month”范围中的数据

所以我使用了类似于
$(“#statstable”).DataTable().ajax.url(“/api/stats/”+year+“/”+month+“/”).load(),它可以工作,但这不允许我在一个月内更新
total\u

你知道怎么做吗


我尝试再次调用
$('#statstable').DataTable({ajax:function(data,callback,settings){…
,但这会产生一个错误
无法重新初始化DataTable

您可以将一个变量与
table.ajax.reload()一起用于URL源代码
,要从新URL每次重新填充表格和跨度,请执行以下操作:

$(document).ready(function() {

  // my test URLs are http://localhost:7000/stats/1 and http://localhost:7000/stats/2
  var base_url = "http://localhost:7000/stats/";
  var full_url = base_url + '1';
 
  var table = $('#statstable').DataTable( {
    ajax: function (data, callback, settings) {
      $.ajax({
        url: full_url,
      }).then ( function(json) {
        var data = json;
        //console.log( json.total_in_month );
        $("#total_in_month").text(json.total_in_month);
        callback(data);
      });
    },

    search: false,
    columns: [
      { data: "total_on_date" },
      { data: "date" },
      { data: "externals" }
    ]
  });

  // a demo of changing the URL and re-displaying the table and span
  // data from the new URL:
  setInterval( function () {
    full_url = base_url + '2';
    table.ajax.reload();
  }, 3000 );

} );
在我的例子中,我只使用了一个简单的测试URL和一个变量:

var base_url = "http://localhost:7000/stats/";
var full_url = base_url + '1';
您需要根据URL、
year
month
值调整该值


在我的示例代码中,仅出于演示目的,页面是从
http://localhost:7000/stats/1
,3秒钟后,页面会自动更新
http://localhost:7000/stats/2
。这适用于表格和span。

取决于“动态更改数据”的含义-但您可能只需要
table.ajax.reload();
。该调用将重新执行DataTable定义中的
ajax
选项。它将从URL获取最新数据,并更新外部span.A
table.ajax.URL()
,然后是
table.ajax.reload()
似乎与
table.ajax.url().load()
具有相同的效果。当重新执行json请求时,我希望接收一次json数据,并在每个月更新表/和/和
#total_
span,就像我使用
ajax:function(数据、回调、设置)一样
最初加载表时调用。明白了吗?我提供了一种方法,将
table.ajax.reload()
与URL变量结合使用。这避免了使用
table.ajax.URL()
var base_url = "http://localhost:7000/stats/";
var full_url = base_url + '1';