服务器端DataTable JS clear()无法正常工作

时间:2018-09-28 07:53:31

标签: javascript datatable datatables server-side

在Laravel项目中,我正在使用DataTable JS(具有服务器端处理)来显示表。我想要一些想要使用DataTable的API的自定义功能,已经尝试了一段时间,但是我无法清除dataTable来插入新数据并重新绘制它。您能帮我吗?

这是我的JS代码的相关部分

初始化数据表

      dt = $('#dataTable').DataTable({
            'processing': true,
            'serverSide': true,
            'select': 'multiple',
            'ajax': {
                'url' :'{!! url('/') !!}/newOrderData',
                'type': 'POST',
                'headers': {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            },
            'columns': [
                { 'data': 'id', 'name': 'id' },
                { 'data': 'name', 'name': 'name' },
                { 'data': 'area', 'name': 'area' },
                { 'data': 'estimate', 'name': 'estimate' },
            ],
            "columnDefs": [
                { className: "orderId", "targets": [ 0 ] }
             ]
        });

尝试清除数据并重新绘制新的

        $('#areas').change(function(){
           var areaId = $(this).val();
           var token = "{{ csrf_token() }}";

           dt.clear().draw();

           $.post('{!! url('/') !!}/newOrderData',{area: areaId,_token:token}, function(newDataArray) {


                dt.rows.add(newDataArray); // Add new data
                dt.draw(); 

            });

        });

当更改事件处理程序被触发时,什么也没有发生,没有错误,该表显示一个处理标志,但所有内容保持不变。

我正在关注this question。但是该解决方案似乎对我不起作用。请帮忙。

1 个答案:

答案 0 :(得分:0)

尝试使用此代码清除您的数据,

$('#areas').change(function(){
           var areaId = $(this).val();
           var token = "{{ csrf_token() }}";
           var dt = $('#dataTable').DataTable(); //create new object of the datatable
           dt.clear().draw();

           $.post('{!! url('/') !!}/newOrderData',{area: areaId,_token:token}, function(newDataArray) {


                dt.rows.add(newDataArray); // Add new data
                dt.draw(); 

            });

        });

我也遇到了这个问题,该解决方案对我来说是有效的。

希望这对您有用。