如何重新加载datatable(jquery)数据?

如何重新加载选定的标签? 实际上我有重装部分的问题。 当我添加我的数据时,我将成功保存在datatable中,但在数据库中的id字段中显示正确的id,但是当我添加详细信息时,它不会在datatable中显示id。

(在刷新摘要选项卡之前)这里是示例,它在datatable id患者丈夫年龄中显示类似这样的东西………..所以……”xyz abc 23 ……. so上…

(手动刷新后)但是当我刷新我的页面时它显示成功..就像在datatable中:id患者丈夫年龄………..等等… 13 xyz abc 23 ….. ..等……

但正是我想要在添加细节时自动刷新所选标签。

我的代码如下:

 function fnClickAddRow(event) { $('#table_scroll').dataTable().fnAddData( [ $('#patientt').val(),$('#husband').val(),$('#age').val(),$('#opu_no').val(),$('#date').val(),$('#proc').val(),$('#no_of_eggs').val(),$('#fert').val(),$('#et_date').val(),$('#et_day').val(),$('#et').val(),$('#fz').val(),$('#bioch_preg').val(),$('#clin_preg').val(),$('#fh').val(),$('#comment').val() ]); var datastring = $(Form_summary).serialize(); $.ajax({ type: "POST", url: "summaryajax.php", data: datastring, success: function(response){ alert(response); } }); 

我也厌倦了这种方法但没有成功。

我希望我的数据表刷新数据

 function fnClickAddRow(event) { var datastring = $(Form_summary).serialize(); $.ajax({ type: "POST", url: "summaryajax.php", data: datastring, success: function(response){ $('#table_scroll').dataTable().fnAddData( [resposne, $('#patientt').val(), $('#husband').val(),$('#age').val(), $('#opu_no').val(), $('#date').val(),$('#proc').val(), $('#no_of_eggs').val(), $('#fert').val(),$('#et_date').val(), $('#et_day').val(), $('#et').val(), $('#fz').val(), $('#bioch_preg').val(), $('#clin_preg').val(), $('#fh').val(), $('#comment').val() ]); } }); 

你可以用一个简单的方法……

 $('YourDataTableID').dataTable()._fnAjaxUpdate(); 

它将通过使用相同参数发出ajax请求来刷新数据。 非常简单。

你可以使用这个function:

 function RefreshTable(tableId, urlData) { //Retrieve the new data with $.getJSON. You could use it ajax too $.getJSON(urlData, null, function( json ) { table = $(tableId).dataTable(); oSettings = table.fnSettings(); table.fnClearTable(this); for (var i=0; i 

不要忘记删除function成功调用它。

资料来源: http : //www.meadow.se/wordpress/? p = 536

使用DataTables.net作者提供的fnReloadAjax() 。

我正在复制下面的源代码 – 以防原始版本移动:

 $.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings, sNewSource, fnCallback, bStandingRedraw ) { if ( typeof sNewSource != 'undefined' && sNewSource != null ) { oSettings.sAjaxSource = sNewSource; } this.oApi._fnProcessingDisplay( oSettings, true ); var that = this; var iStart = oSettings._iDisplayStart; var aData = []; this.oApi._fnServerParams( oSettings, aData ); oSettings.fnServerData( oSettings.sAjaxSource, aData, function(json) { /* Clear the old information from the table */ that.oApi._fnClearTable( oSettings ); /* Got the data - add it to the table */ var aData = (oSettings.sAjaxDataProp !== "") ? that.oApi._fnGetObjectDataFn( oSettings.sAjaxDataProp )( json ) : json; for ( var i=0 ; i 

更简单的解决方案

 var dt = $('#table_scroll').dataTable(); $.getJSON(url, null, function (json) { dt.fnClearTable(); dt.fnAddData(json.aaData); dt.fnDraw(); }); 

如果有什么作品! 做这个:

例:

 

如何重新加载表格:

 $('#tabledisplay').empty(); $('#tabledisplay').append("
"); initTable( "tablename");

initTable只是一个用getJSON初始化Table的方法。

这些解决方案都不适合我,但我确实做了类似于Masood的回答。 这是为了后代。 假设您的页面中有

 function generate_support_user_table() { $('#mytable').hide(); $('#mytable').dataTable({ ... "bDestroy": true, "fnInitComplete": function () { $('#support_user_table').show(); }, ... }); } 

重要的部分是:

  1. bDestroy ,在加载之前擦除当前表。
  2. hide()调用和fnInitComplete ,它确保表只在加载所有内容后出现。 否则它会在加载时resize并且看起来很奇怪。

只需将函数调用添加到$(document).ready() ,您应该全部设置。 它最初将加载表,以及稍后按下按钮或其他任何内容时重新加载。

 // Get the url from the Settings of the table: oSettings.sAjaxSource function refreshTable(oTable) { table = oTable.dataTable(); oSettings = table.fnSettings(); //Retrieve the new data with $.getJSON. You could use it ajax too $.getJSON(oSettings.sAjaxSource, null, function( json ) { table.fnClearTable(this); for (var i=0; i 

我发布这个以防万一有人需要它..

只需创建一个按钮:

  

但是在调用数据表时不要忘记添加它:

 mytable = $("#mytable").dataTable(); 

要从Ajax数据源重新加载表数据,请使用以下函数:

 dataTable.ajax.reload() 

其中dataTable是用于创建表的变量。

 var dataTable = $('#your_table_id').DataTable({ ajax: "URL" }); 

有关更多信息,请参阅ajax.reload()

对于较新的版本,请使用:

 var datatable = $('#table').dataTable().api(); $.get('myUrl', function(newDataArray) { datatable.clear(); datatable.rows.add(newDataArray); datatable.draw(); }); 

取自: https : //stackoverflow.com/a/27781459/4059810