簡體   English   中英

數據表-重新初始化函數中的數據表

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM