Datatables 运行数据表';更新表时的ajax()函数
我有一个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
{
"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},
...
]
}
一切正常,即正确填充我的数据表,并在加载页面时正确更新spantotal\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.Atable.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';