如何在Ajax中重新初始化数据表

时间:2014-06-27 12:49:52

标签: jquery ajax

我需要什么

*加载Ajax时,数据重新加入。

Ajax调用代码:

   if ($('#teamTable').size() > 0)
    {

        $('#teamTable').dataTable({
            "sPaginationType": "bootstrap"
        });
    }

      $("#save_team").click(function() {
            $.ajax({
            type: "POST",
            url: "asana_team.php",
            data: { people_name: $('#e2').val(), team_name:$('#teamname').val() },
            beforeSend : function(){
                $("#team_table").remove();
                $("#team_table_div").append("<center id=\"loading\" style=\"margin-top:25%;margin-bottom:25%\"><img src='../common/images/ajax-loader.gif' /></center>");
            },
            contentType: "application/x-www-form-urlencoded"
            }).done(function(data) {
                $("#loading").remove();
                $('#team_table_div').append(data);
                $('#teamTable').dataTable({
                    "sPaginationType": "bootstrap"
                });                    
            });
        });

*工作正常但我在数据表中重新加入分页没有数据加载。

  • 我已使用此代码重新启动表。

     function callBack()
     {
     var call= $('#teamTable');
    
    call.dataTable({
     "sPaginationType": "bootstrap",
     "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
     "oLanguage": {
     "sLengthMenu": "_MENU_ records per page"
     } });
    }
    $(document).ready(function() {
    callBack();
    });
    

8 个答案:

答案 0 :(得分:16)

首先使用

销毁
    $('#teamTable').dataTable().fnDestroy();

然后重新初始化

    $('#teamTable').dataTable();

答案 1 :(得分:9)

这对我有用:

首先我使用

初始化数据表
$(".myTable").DataTable({ "bDestroy": true, .... });

&#34; bDestroy&#34;在我的情况下,属性是必要的。

然后,当我有动态附加到我的表格时,我会执行以下操作:

$(".myTable").dataTable().fnDestroy();
//Append stuff to my table
$(".myTable").DataTable({ "bDestroy": true, ... });

另请注意,我在销毁表时使用dataTable()函数,并在初始化时使用DataTable()函数。

答案 2 :(得分:6)

这对我有所帮助。

$('#teamTable').dataTable().fnDestroy();
$('#teamTable').empty();

.empty()非常重要,因为在.fnDestory()之后,表元素仍然存在潜伏的数据,这些数据也被转移到重新初始化的表中。

答案 3 :(得分:6)

经过大量研究后,这对我有用: - 首先检查dataTable是否存在,如果确实存在,则销毁dataTable并重新创建

&#13;
&#13;
if ($.fn.DataTable.isDataTable("#mytable")) {
  $('#mytable').DataTable().clear().destroy();
}

$("#mytable").dataTable({...
                       
                });
&#13;
&#13;
&#13;

答案 4 :(得分:2)

试试这个:

$("#table").dataTable({
            "destroy": true,
            // ...
        });

答案 5 :(得分:1)

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


var table = $('#t_isteklerim').DataTable({
        "bAutoWidth": true,
        'dom': 'BRlfrtip',
        "columns":        [
            {'id':'id'},
            {'tekliftarihi':'tekliftarihi'},
            {'istektarihi':'istektarihi'},
            {'istekadedi':'istekadedi'}
        ],
        "language":{"url":"<?=base_url()?>assets/libs/misc/datatables/Turkish.json"},
        "order": [[ 0, "desc" ]],
        "autoWidth":      true,
        "ajax": {
            url : "<?=base_url()?>tekliflerim/fx_get_items_isteklerim",
            type : 'GET'
        }
    }  );  

DataTable()和dataTable()不同!

答案 6 :(得分:1)

从@ravi dudi的答案获得帮助,我修改了一行,经过大量研究后,该解决方案对我有用。就我而言,清除数据并没有帮助,我只是销毁了现有实例并在ajax之后重新初始化。

//Check if datatable instance exists before ajax starts:
if ($.fn.dataTable.isDataTable('#dtid')) {
    $('#dtid').dataTable().fnDestroy();               
}

//reintialise after ajax success:
$('#dtid').DataTable({

答案 7 :(得分:0)

您可能需要将dataTable存储在变量中,以便能够更改选项或调用函数。

第一步: 将表存储到变量

 var oTable = $('#teamTable').dataTable({
            "sPaginationType": "bootstrap"
        });
第二步: 当您要清除表格时,在您的ajax请求中。

if (oTable != undefined) {
    oTable.fnClearTable();
}

修改

var oTable; 
if ($('#teamTable').size() > 0)
    {

        var oTable = $('#teamTable').dataTable({
            "sPaginationType": "bootstrap"   //storing the instance of the dataTable for futher use in the future
        });
    }

      $("#save_team").click(function() {
            $.ajax({
            type: "POST",
            url: "asana_team.php",
            data: { people_name: $('#e2').val(), team_name:$('#teamname').val() },
            beforeSend : function(){
                $("#team_table").hide(); //we dont need to remove table, only hide it..
                $("#team_table_div").append("<center id=\"loading\" style=\"margin-top:25%;margin-bottom:25%\"><img src='../common/images/ajax-loader.gif' /></center>");
            },
            contentType: "application/x-www-form-urlencoded"
            }).done(function(data) {
                $("#loading").remove();
                $('#team_table_div').append(data);
                $('#teamTable').show();
                //here we clean the data from the table
               if (oTable != undefined) {
                    oTable.fnClearTable();
               }                  
            });
        });