2016-03-02 88 views
0

我正在使用數據表以及類似Button,FixedColumns的擴展。我的腳本代碼:未定義的錯誤數據表jQuery

的jQuery:

function getData(id) 
    { 
     if($.fn.DataTable.isDataTable("#tableid")) 
     { 
      $("#tableid").DataTable().clear().destroy(false); 
     } 
     $.ajax({ 
      type: 'POST', 
      url: "<?= base_url(); ?>data/view/"+id, 
      success: function (data, textStatus, jqXHR) { 
       console.log(data); 
       if(data.length==0) 
       { 
        $("#overlay").fadeIn(500, function() { 
         $("#tableid_cont").css('visibility', "hidden"); 
        }); 
        //alert("No data in DB!"); 
       } 
       else 
       { 
        $("#tableid").html(data); 
        initTable(); 
       } 
      } 
     }); 
    } 
    function initTable() 
    { 
     var table = $("#tableid").DataTable({ 
      scrollY: "100%", 
      scrollX: true, 
      scrollCollapse: true, 
      paging: false, 
      fixedColumns: true, 
      ordering: false, 
      lengthChange: false, 
      "bInfo": false, 
      buttons: ['excel'], 
      "drawCallback": function (settings) { 
       $("#overlay").fadeOut(500, function() { 
        $("#tableid_cont").css('visibility', "visible"); 
       }); 
      } 
     }); 
     table.buttons().container().appendTo('#action-buttons'); 
    } 

getData()通過選擇HTML元素的事件onchange和放慢參數id操縱得到一些整數值。 ajax的返回將是一個包含ID爲tableid的HTML表的字符串。

讓我選擇值是1,2,3

我開始打電話getData(1),該負載並初始化沒有問題的數據表的罰款。如果值更改爲23我得到的錯誤是無法讀取未定義的屬性'dt'並且這發生在行$("#tableid").DataTable().clear().destroy(false);

然後再次更改值,該表格正常工作,絕對沒有錯誤。

我得出的結論是:數據表初始化後,destroy()被調用併發生錯誤。但是實際上被毀壞了。另一次初始化可以再次完成,所以下次不會發生錯誤。

我做錯了什麼?我努力嘗試,但無法克服這個錯誤。

回答

0

而不是破壞數據表,嘗試重新加載它是通過AJAX:

$('#tableid').DataTable().ajax.reload(); 
+0

我的回報是不是'JSON'和使用重裝,但錯誤:null'的'無法設置屬性「數據」 –