[英]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.