如何重新加载/刷新jQuery的dataTable的?(How to reload/refresh

2019-06-18 13:00发布

我想实现的功能,从而点击屏幕上的按钮会引起我的jQuery的dataTable刷新(如自DataTable中创建服务器端的数据源可能已经改变)。

下面是我有:

$(document).ready(function() {
    $("#my-button").click(function() {
        $("#my-datatable").dataTable().fnReloadAjax();
    });
});

但是,当我运行它,它什么都不做。 什么是刷新数据表上单击按钮时的正确方法? 提前致谢!

Answer 1:

你可以尝试以下方法:

function InitOverviewDataTable()
{
  oOverviewTable =$('#HelpdeskOverview').dataTable(
  {
    "bPaginate": true,
    "bJQueryUI": true,  // ThemeRoller-stöd
    "bLengthChange": false,
    "bFilter": false,
    "bSort": false,
    "bInfo": true,
    "bAutoWidth": true,
    "bProcessing": true,
    "iDisplayLength": 10,
    "sAjaxSource": '/Helpdesk/ActiveCases/noacceptancetest'
  });
}

function RefreshTable(tableId, urlData)
{
  $.getJSON(urlData, null, function( json )
  {
    table = $(tableId).dataTable();
    oSettings = table.fnSettings();

    table.fnClearTable(this);

    for (var i=0; i<json.aaData.length; i++)
    {
      table.oApi._fnAddData(oSettings, json.aaData[i]);
    }

    oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
    table.fnDraw();
  });
}

function AutoReload()
{
  RefreshTable('#HelpdeskOverview', '/Helpdesk/ActiveCases/noacceptancetest');

  setTimeout(function(){AutoReload();}, 30000);
}

$(document).ready(function () {
  InitOverviewDataTable();
  setTimeout(function(){AutoReload();}, 30000);
});

http://www.meadow.se/wordpress/?p=536



Answer 2:

随着数据表的1.10.0版本,它内置于易:

var table = $('#example').DataTable();
table.ajax.reload();

要不就

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

http://datatables.net/reference/api/ajax.reload()



Answer 3:

你可以使用DataTable的广泛的API被重新装入ajax.reload()

如果你宣布你的数据表中的DataTable()新版本),你需要:

var oTable = $('#filtertable_data').DataTable( );
// to reload
oTable.ajax.reload();

如果你宣布你的数据表为dataTable()老版),您需要:

var oTable = $('#filtertable_data').dataTable( );
// to reload
oTable.api().ajax.reload();


Answer 4:

我有同样的问题,这是我如何固定它:

首先与您所选择的方法获取数据,我用ajax提交的结果,这将使变化表后。 然后清除并添加新的数据:

var refreshedDataFromTheServer = getDataFromServer();

var myTable = $('#tableId').DataTable();
myTable.clear().rows.add(refreshedDataFromTheServer).draw();

这里是源: https://datatables.net/reference/api/clear()



Answer 5:

销毁数据表,然后再绘制的数据表。

$('#table1').DataTable().destroy();
$('#table1').find('tbody').append("<tr><td><value1></td><td><value1></td></tr>");
$('#table1').DataTable().draw();


Answer 6:

var ref = $('#example').DataTable();
ref.ajax.reload();

如果你想重新加载/刷新按钮添加到数据表 1.10然后使用drawCallback。

见下面的例子(我用的自举CSS 数据表

var ref= $('#hldy_tbl').DataTable({
        "responsive": true,
        "processing":true,
        "serverSide":true,
        "ajax":{
            "url":"get_hotels.php",
            "type":"POST"
        },
        "drawCallback": function( settings ) {
            $('<li><a onclick="refresh_tab()" class="fa fa-refresh"></a></li>').prependTo('div.dataTables_paginate ul.pagination');
        }
    });

function refresh_tab(){
    ref.ajax.reload();
}


Answer 7:

这个简单的回答为我工作

                  $('#my-datatable').DataTable().ajax.reload();

REF https://datatables.net/forums/discussion/38969/reload-refresh-table-after-event



Answer 8:

这就是我要做的事......也许不是最好的方式,但它绝对简单(恕我直言),并且不需要任何额外的插件。

HTML

<div id="my-datatable"></div>

jQuery的

function LoadData() {
    var myDataTable = $("#my-datatable").html("<table><thead></thead><tbody></tbody></table>");
    $("table",myDataTable).dataTable({...});
}
$(document).ready(function() {
    $("#my-button").click(LoadData);
    LoadData();
});

注:在我的工作方式与jQuery的dataTable,有时如果你没有<thead></thead><tbody></tbody>这是行不通的。 但是,你可能就不需要了度日。 我已经不完全想通了什么使得它需要和什么不。



Answer 9:

尝试破坏数据表第一然后再设置它,例如

var table;
$(document).ready(function() {
    table = $("#my-datatable").datatable()
    $("#my-button").click(function() {
        table.fnDestroy();
        table = $("#my-datatable").dataTable();
    });
});


Answer 10:

好了,你没有展示如何/你在哪里加载脚本,但是使用该插件API函数,你必须把它列入你的页面加载的数据表库之后,但在初始化数据表之前。

像这样

<script type="text/javascript" src="jquery.dataTables.js"></script>
<script type="text/javascript" src="dataTables.fnReloadAjax.js"></script>


Answer 11:

如果使用url属性,只是做

table.ajax.reload()

希望它可以帮助别人



Answer 12:

我会建议使用下面的代码。

table.ajax.reload(null, false); 

这样做的原因,用户呼叫将不会在重装复位。
例:

<button id='refresh'> Refresh </button>

<script>
    $(document).ready(function() {

        table = $("#my-datatable").DataTable();
        $("#refresh").on("click", function () { 
         table.ajax.reload(null, false); 
        });

   });
</script>

关于这个细节,可以发现这里



Answer 13:

艾伦·渣甸数据表是一个非常强大的,华而不实的jQuery插件,用于显示表格数据。 它有许多功能,可以完成大部分的你可能想要的东西。 有一件事好奇困难虽然是如何刷新以简单的方式的内容,所以我对我自己的引用,也可能为他人以及利益,这里有一个方式,如果这样一个完整的例子:

HTML

<table id="HelpdeskOverview">
  <thead>
    <tr>
      <th>Ärende</th>
      <th>Rapporterad</th>
      <th>Syst/Utr/Appl</th>
      <th>Prio</th>
      <th>Rubrik</th>
      <th>Status</th>
      <th>Ägare</th>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>

使用Javascript

function InitOverviewDataTable()
{
  oOverviewTable =$('#HelpdeskOverview').dataTable(
  {
    "bPaginate": true,
    "bJQueryUI": true,  // ThemeRoller-stöd
    "bLengthChange": false,
    "bFilter": false,
    "bSort": false,
    "bInfo": true,
    "bAutoWidth": true,
    "bProcessing": true,
    "iDisplayLength": 10,
    "sAjaxSource": '/Helpdesk/ActiveCases/noacceptancetest'
  });
}

function RefreshTable(tableId, urlData)
{
  $.getJSON(urlData, null, function( json )
  {
    table = $(tableId).dataTable();
    oSettings = table.fnSettings();

    table.fnClearTable(this);

    for (var i=0; i<json.aaData.length; i++)
    {
      table.oApi._fnAddData(oSettings, json.aaData[i]);
    }

    oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
    table.fnDraw();
  });
}

function AutoReload()
{
  RefreshTable('#HelpdeskOverview', '/Helpdesk/ActiveCases/noacceptancetest');

  setTimeout(function(){AutoReload();}, 30000);
}

$(document).ready(function () {
  InitOverviewDataTable();
  setTimeout(function(){AutoReload();}, 30000);
});

资源



Answer 14:

        if(data.length==0){
            alert("empty");
              $('#MembershipTable > tbody').empty();
            // $('#MembershipTable').dataTable().fnDestroy();
                    $('#MembershipTable_info').empty(); 
                    $("#MembershipTable_length").empty();
                    $("#MembershipTable_paginate").empty();

             html="<tr><td colspan='20'><b>No data available in Table</b> </td></tr>";
           $("#MembershipTable").append(html);
        }

        else{
             $('#MembershipTable').dataTable().fnDestroy();
            $('#MembershipTable > tbody').empty();

         for(var i=0; i<data.length; i++){
            //

.......}



Answer 15:

根据该数据表的帮助,我能为我的表进行。

我想就想多个数据库,以我的数据表。

例如:data_1.json> 2500记录 - data_2.json> 300条记录 - data_3.json> 10265个记录

var table;
var isTableCreated= false;

if (isTableCreated==true) {
    table.destroy();
    $('#Table').empty(); // empty in case the columns change
}
else
    i++;

table = $('#Table').DataTable({
        "processing": true,
        "serverSide": true,
        "ordering": false,
        "searching": false,
        "ajax": {
            "url": 'url',
            "type": "POST",
            "draw": 1,
            "data": function (data) {
                data.pageNumber = (data.start / data.length);
            },
            "dataFilter": function (data) {
                return JSON.stringify(data);
            },
            "dataSrc": function (data) {
                if (data.length > 0) {
                    data.recordsTotal = data[0].result_count;
                    data.recordsFiltered = data[0].result_count;
                    return data;
                }
                else
                    return "";
            },

            "error": function (xhr, error, thrown) {
                alert(thrown.message)
            }
        },
        columns: [
           { data: 'column_1' },
           { data: 'column_2' },
           { data: 'column_3' },
           { data: 'column_4' },
           { data: 'column_5' }
        ]
    });


Answer 16:

如果使用数据表v1.10.12然后简单的调用.draw()方法并传递您所需的画种,即full-resetpage ,那么你将重新绘制新的数据你的DT

let dt = $("#my-datatable").datatable()

//做一些动作

dt.draw('full-reset')

更多请查看数据表文档



Answer 17:

我做了一些,涉及到这...以下是你所需要的样本的JavaScript。 在灯架上有一个演示在这里: http://codersfolder.com/2016/07/crud-with-php-mysqli-bootstrap-datatables-jquery-plugin/

//global the manage member table 
var manageMemberTable;

function updateMember(id = null) {
    if(id) {
        // click on update button
        $("#updatebutton").unbind('click').bind('click', function() {
            $.ajax({
                url: 'webdesign_action/update.php',
                type: 'post',
                data: {member_id : id},
                dataType: 'json',
                success:function(response) {
                    if(response.success == true) {                      
                        $(".removeMessages").html('<div class="alert alert-success alert-dismissible" role="alert">'+
                              '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+
                              '<strong> <span class="glyphicon glyphicon-ok-sign"></span> </strong>'+response.messages+
                            '</div>');

                        // refresh the table

                        manageMemberTable.ajax.reload();

                        // close the modal
                        $("#updateModal").modal('hide');

                    } else {
                        $(".removeMessages").html('<div class="alert alert-warning alert-dismissible" role="alert">'+
                              '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+
                              '<strong> <span class="glyphicon glyphicon-exclamation-sign"></span> </strong>'+response.messages+
                            '</div>');

                        // refresh the table                        
                        manageMemberTable.ajax.reload();

                        // close the modal
                        $("#updateModal").modal('hide');
                    }
                }
            });
        }); // click remove btn
    } else {
        alert('Error: Refresh the page again');
    }
}


Answer 18:

。VAR myTable的= $( '#tblIdName')的DataTable(); 。myTable.clear()rows.add(myTable.data).draw();

这为我工作,而无需使用AJAX。



Answer 19:

    function autoRefresh(){
        table.ajax.reload(null,false); 
        alert('Refresh');//for test, uncomment
    }

    setInterval('autoRefresh()', 5000); 


Answer 20:

重新初始化数据表与init和编写检索..done..so简单,真正的

例如。

TableAjax.init();
retrieve: true,


文章来源: How to reload/refresh jQuery dataTable?