首页 > 解决方案 > 数据表无法重新初始化数据表并且销毁不起作用

问题描述

选择一个新选项后,我已经尝试了所有用于销毁和清空数据表的命令,但无法正常工作。

这是我的 js 文件中包含 ajax 的一部分。它使用动态 urls api。

    function table(url, columns) {
    
        var dt = $("#datatables").dataTable({
            "serverSide": true,
            "processing": true,
            "ajax": {
                "url": url,
                "type": "GET",
            },
            "columns": columns,
            lengthMenu: [[25, 100, 250, 500], [25, 100, 250, 500]],
            pageLength: 25,
            // destroy: true
        });
    ... // more stuff here about the design of the table
    }

    $("form#btnGetDomain").on("submit", function (ev) {
        ev.preventDefault();
        ev.stopPropagation();

        // $("#datatables").dataTable().fnDestroy();

        var url;
        var columns;
    
        var categ = document.getElementById("categ").value;

    // this is where i do if statements depending what options was selected
// i get the proper url api
    ... 
    
        table(url, columns);
    });

我已经尝试了所有这些命令:

$("#datatables").dataTable().fnDestroy();

$("#datatables").empty();


destroy: true,

数据表中的命令“destroy:true” 我不知道它是否正常工作,因为在我第二次尝试选择另一个选项后,表没有响应,它只是说**处理....**

在我选择任何选项来清除表格之前,我还尝试将命令放在 on submit 函数中。现在我正在考虑做一个 if 语句,如果它们是一个表,请清除它。

谢谢

更新

我尝试过使用dataTableDataTable

**更新 2 **

if ($.fn.DataTable.isDataTable("#datatables")) {
        $("#datatables").DataTable().clear().draw();
        $("#datatables").dataTable().fnDestroy();
    }

我在var dt = $("#datatables").dataTable({...

是的,我注意到我使用了小型和大型数据表……但这有效……我确实尝试将两者都与大D一起使用,但没有奏效……还尝试在最后一个中使用:DataTable().destroy ();...没用

示例:使用视频和频道我选择了第一次视频。

在我选择频道后:它可以更改列名(我为每个 api 设置了不同的列名)......但行保持不变。

当我选择返回视频时。列名更改,行更改为先前选择的通道。

希望你能理解。为什么我必须使用dataTableDataTable真的没有意义......

它确实改变了,但错误的改变......至少我越来越接近答案,希望如此。

标签: javascriptdatatable

解决方案


我找到了答案我把这行代码放在表函数的开头

function table(url, columns) {
    var dt;

    if ($.fn.DataTable.isDataTable("#datatables")) {
        $("#datatables").DataTable().clear().draw();
        $("#datatables").DataTable().destroy();
        $("#datatables thead").html('');
    }

...
}

它对我来说很好,它清除了行,破坏了表格,并清空了thead

哦..我已经从小写数据表更改为大写数据表


推荐阅读