我还在学习如何编写js和datatables,我正在使用ajax开发crud。我在这里有这个代码:
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操作初始化了数据表,所以我不能使用这个代码。如何使用此函数才能与我的crud操作一起工作?
发布于 2019-02-12 10:58:54
如果通过函数定义表的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();此时,它将再次查看filter小部件,获取值,并将新值与新的AJAX请求一起发送。
https://stackoverflow.com/questions/53125935
复制相似问题