未定义的错误数据表jQuery

时间:2016-03-02 15:36:22

标签: jquery ajax datatables

我正在使用数据表以及Button,FixedColumns等扩展。我的脚本代码是:

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()由select HTML元素中的事件onchange操纵,参数id获取一些整数值。返回ajax将是一个包含标识为tableid的HTML表的字符串。

让我的选择值为1,2,3

我开始调用getData(1)并加载并初始化数据表没有问题。如果值更改为23,则我得到的错误是无法读取未定义的属性'dt',这会发生在$("#tableid").DataTable().clear().destroy(false);

然后再次更改值,表格工作正常,完全没有错误。

我得出的结论是:在初始化数据表之后,调用destroy()并发生错误。但实际上已被摧毁。另一次初始化可以再次完成,因此下次不会发生错误。

我做错了吗?我努力但却无法克服这个错误。

1 个答案:

答案 0 :(得分:0)

而不是销毁数据表,尝试重新加载它是ajax:

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