[英]Datatables -Reinitializing datatables in a function
我仍在学习如何对js和数据表进行编码,并且正在使用ajax编写脚本。 我在这里有此代码:
load_data();
function load_data(is_suppliers)
{
var dataTable = $('#product_data').DataTable({
"processing":true,
"serverSide":true,
"order":[],
"ajax":{
url:"fetch.php",
type:"POST",
data:{is_suppliers:is_suppliers}
},
"columnDefs":[
{
"targets":[0,5,7,8],
"orderable":false,
},
],
});
}
此函数用于列过滤,并在此处使用以下代码:
$(document).on('change', '#supplier_filter', function(){
var supplier = $(this).val();
$('#product_data').DataTable().destroy();
if(supplier != '')
{
load_data(supplier);
}
else
{
load_data();
}
});
问题在于该函数初始化了数据表:
var dataTable = $('#product_data').DataTable({});
而且我已经为crud操作初始化了数据表,因此无法使用此代码。 如何使用此功能,使其可以与我的操作一起使用?
如果通过函数定义表的ajax数据源,则可以在调用时确定要与AJAX请求一起发送的参数。 然后,您可以根据需要重新加载数据源,并且过滤器的最新值将在有效负载中发送。
更换
"ajax":{
url:"fetch.php",
type:"POST",
data:{is_suppliers:is_suppliers}
},
用类似的东西
ajax: function(data, callback, _settings) {
$.ajax({
type: 'POST',
url: 'fetch.php',
data: { is_suppliers: $('#supplier_filter').val() }
}).then(function(res) {
callback({ data: res });
});
},
现在,当表第一次加载时,它将从过滤器控件中获取过滤器值,然后将其作为AJAX请求的一部分发送。
以后,您可以使用
$('#product_data').DataTable().ajax.reload();
然后,它将再次查看过滤器小部件,获取值,并将新值与新的AJAX请求一起发送。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.