未捕获的TypeError:$ .fn.DataTable.isDataTable不是函数

时间:2018-01-12 17:34:58

标签: javascript jquery datatables

我正在使用数据表来显示数据库中的数据,我可以执行删除和编辑操作。通过以下代码,我可以从数据库中获取数据并执行编辑和删除。但问题是当我删除特定行时,它会从数据库中删除但仍显示在数据表中。我使用" table.destroy();"但它给出了以下错误。 未捕获的TypeError:$ .fn.DataTable.isDataTable不是函数。

数据表代码:

<script>
 var table;

                if($.fn.DataTable.isDataTable('#sun_project_table') ) {
            table=$('#sun_project_table').DataTable();
            table.destroy();
            //$('#category_table_body').empty();
        }

                table=$('#sun_project_table').DataTable({
                "aLengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],   
                "iDisplayLength": <?php echo 10; ?>,    
                'bProcessing'    : true,
                'bServerSide'    : true,
                'sAjaxSource'    : "<?php echo base_url();?>index.php/Registrationc/displayinfo8",
                columns: [
                            { "name": "van_village_mapping.van_id", "data": "van_id" }, 
                            { "name": "van_village_mapping.village_id", "data": "village_id" },
                                                        { "name": "Actions", "data": "Actions" }
                        ],
                "columnDefs": [
                {
                }],
                "createdRow": function ( row, data, index ) {
                },
                'fnServerData': function(sSource, aoData, fnCallback)
                {
                    aoData.push();
                    $.ajax
                    ({
                        'dataType': 'json',
                        'type'    : 'POST',
                        'url'     : sSource,
                        'data'    : aoData,
                        'success' : fnCallback
                    });
                },  
                "oTableTools": {
                    "sSwfPath": "assets/media/swf/copy_csv_xls_pdf.swf",
                },
                "oLanguage": {
                    "sSearch": "Filter: "
                }
            });

                });
        </script>
        <script> 
               function delete_van_village_mapping($1){
                     $.ajax({
                              type:"POST",
                              url: "<?php echo base_url(); ?>index.php/Registrationc/delete_van_village_mapping1",
                               data:{van_village_mapping_id:$1},
                               success: function()
                               {
                                   alert('done!');

                                }
                           });
                     };
         </script>

1 个答案:

答案 0 :(得分:3)

对于您的问题,由于您在初始化表时设置了table = $('#sun_project_table').DataTable({...});,因此如果要在销毁之前检查表是否存在,则可以执行

if(table) {
   table.destroy();
   ...
}

但我同意其他评论,如果你只是想刷新表,你可以删除该行,或清除表并通过ajax再次获取它。