如何更改 DataTables 中的 AJAX 数据
How to change AJAX data in DataTables
我有一个 DataTable,它能够在 初始化 table 时成功获取一次 AJAX 数据。
现在我需要能够 "refetch" AJAX 数据来更新 DataTable,但是 无需重新初始化 table。
经过一番研究,我发现我需要使用以下行 "as a function":
ajax.data( data, settings )
此处解释:http://datatables.net/reference/option/ajax.data
不过。我找不到如何使用这个 "as a function"。页面上没有一个示例。
我试了如下
我的DataTable创建初衷:
launch_datatable_ajax = function(){
get_ajax_data();
dyn_t = $('#dynamic_table').DataTable({
"ajax": {
"url":ajax_url,
"data":data,
"dataSrc":""
},
"columns": [
{ "data" : "ID" },
{ "data" : "post_title" },
{ "data" : "supplier_company" },
{ "data" : "img_src" },
{ "data" : "tags" },
{ "data" : "post_meta" },
],
});
}
然后我尝试用新参数重新加载数据。 这是我卡住的地方。
dyn_t.ajax.data(data,dyn_t.settings);
我认为我的参数是正确的:
dyn_t.settings 给出了一些信息:console.log(dyn_t.settings);
'data' 给出我的对象(get 变量):console.log(data);
但是 console.log 说:
Uncaught TypeError: dyn_t.ajax.data is not a function(…)
可以使用 dyn_t.ajax.reload();
重新加载。
但是您的要求是将更新后的 URL 参数也发送到服务器。
为此,您需要使用 ajax 的函数参数:http://datatables.net/reference/option/ajax#function
函数在每次 ajax.reload()
调用中重新验证。这就是将发送新参数的原因。因此,假设您有一个 ID 为 my-form
的 HTML 表单,请尝试这样的操作:
ajax: function ( data, callback, settings ) {
$.ajax({
url: "ajax_url?" + $("my-form").serialize(),
data: { start: data.start, count: data.length }
});
},
我有一个 DataTable,它能够在 初始化 table 时成功获取一次 AJAX 数据。
现在我需要能够 "refetch" AJAX 数据来更新 DataTable,但是 无需重新初始化 table。
经过一番研究,我发现我需要使用以下行 "as a function":
ajax.data( data, settings )
此处解释:http://datatables.net/reference/option/ajax.data
不过。我找不到如何使用这个 "as a function"。页面上没有一个示例。
我试了如下
我的DataTable创建初衷:
launch_datatable_ajax = function(){
get_ajax_data();
dyn_t = $('#dynamic_table').DataTable({
"ajax": {
"url":ajax_url,
"data":data,
"dataSrc":""
},
"columns": [
{ "data" : "ID" },
{ "data" : "post_title" },
{ "data" : "supplier_company" },
{ "data" : "img_src" },
{ "data" : "tags" },
{ "data" : "post_meta" },
],
});
}
然后我尝试用新参数重新加载数据。 这是我卡住的地方。
dyn_t.ajax.data(data,dyn_t.settings);
我认为我的参数是正确的:
dyn_t.settings 给出了一些信息:console.log(dyn_t.settings);
'data' 给出我的对象(get 变量):console.log(data);
但是 console.log 说:
Uncaught TypeError: dyn_t.ajax.data is not a function(…)
可以使用 dyn_t.ajax.reload();
重新加载。
但是您的要求是将更新后的 URL 参数也发送到服务器。
为此,您需要使用 ajax 的函数参数:http://datatables.net/reference/option/ajax#function
函数在每次 ajax.reload()
调用中重新验证。这就是将发送新参数的原因。因此,假设您有一个 ID 为 my-form
的 HTML 表单,请尝试这样的操作:
ajax: function ( data, callback, settings ) {
$.ajax({
url: "ajax_url?" + $("my-form").serialize(),
data: { start: data.start, count: data.length }
});
},