2017-08-28 101 views
-1

我正在处理用户单击按钮时加载新的数据表。新的数据表由服务器端脚本填充。当用户点击按钮时,数据表挂起并显示“正在处理”。数据表处理错误

$('#QuerySelectedBtn').on('click', function(event) {event.preventDefault(); 
    $("#example").dataTable().fnDestroy(); 
    var table = $('#example').DataTable({ 
      "processing": true, 
      "serverSide": true, 
      "ajax":{ 
      url: './datasource02.php', 
      type: 'get', 
       error: function(){ // error handling 
        $(".example-error").html(""); 
        $("#example").append('<tbody class="example-error"><tr><th colspan="3">No data found in the server</th></tr></tbody>'); 
        $("#example_processing").css("display","none"); 
        } 
       }, 
       "columns": [ 
       { "data": "ID" }, 
       { "data": "user_id" }, 
       { "data": "option_name" }, 
       { "data": "option_value" } 
       ], 
       "order": [], 
       "dom": 'lfrtipB',   
       "buttons": { 
       "dom": { 
        "button": { 
         "tag": "button", 
         "className": "btn" 
        } 
        }, 
        "buttons": [ 
         { extend: 'copy', text: 'Copy' }, 
         { extend: 'csv', text: 'CSV' }, 
         { extend: 'excel', text: 'Excel' }, 
         { extend: 'pdf', text: 'PDF' }, 
         { extend: 'print', text: 'Print' } 

        ] 
       } 
      }); 
     }); 
+0

是什么datasource02.php返回:dataTable().fnDestroy();这不会DataTable(); API

仅供参考工作? – Chris

+1

也许您的浏览器devloper控制台显示任何错误。让我知道这些错误。 –

+0

这是控制台中的错误:Uncaught TypeError:无法读取未定义的属性'样式' – zzMzz

回答

0

解决方案:而不是使用此行$("#example").dataTable().fnDestroy();下面的代码使用

var table = $('#example').DataTable(); 
table.destroy(); 

原因:

1. $("#example").dataTable();` // .fnDestroy() works 

2 . $("#example"). DataTable();' // .fnDestroy() doesn't work 
            //.destroy(); will work 

问题在当前配置:

你使用这个API:https://datatables.net/reference/api/

+0

感谢您提供此信息!尽管如此,这并没有解决问题。我发现问题与数据表中的行数有关。我加载的初始数据表有三个列,我加载的第二个数据表有四列。在使用在HTML中添加四列后,加载第二个表格。我需要弄清楚如何隐藏/显示这个列。 – zzMzz

+0

我能够在调用服务器端数据源的Jquery代码中添加列定义。我从HTML中删除了cols,它完美地工作。 – zzMzz

+0

好享受编码@MikeG –