自动刷新DataTables表并重新加载整个页面

是否有人能够指导如何在每1分钟间隔刷新数据表数据而无需重新加载整个页面。

这是我的代码:

$(document).ready( function () { var refreshTable = $('#id_css').DataTable({ "sAjaxSource": 'ajax/alert_data.txt', "bServerSide": true, "iDisplayLength": 100, "bFilter": false, "aaSorting" : [[2, "desc"]], "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) { if ( aData[2] == "5" ) { $('td', nRow).css('background-color', 'Red'); } else if ( aData[2] == "4" ) { $('td', nRow).css('background-color', 'Orange'); } } }); setInterval (function test() { refreshTable.fnDraw(); }, 1000); }); 

我尝试过使用这个插件fnReloadAjax.js,但一直得到TypeError:refreshTable.fnReloadAjax不是一个函数 。 这是我使用它的方式:

 setInterval (function test() { refreshTable.fnReloadAjax(); }, 1000); 

我还添加了它的cdn

  

任何帮助或指南将不胜感激。

你可以做到

 var refreshTable = $('#id_css').DataTable({ ... 

然后在document.ready函数内(必须在范围内,否则fnDraw将不起作用)你使用:

 setInterval (function test() { refreshTable.fnDraw(); }, 1000); 

存在范围问题,代码应如下所示:

 $(document).ready( function () { var refreshTable = $('#id_css').DataTable({ "sAjaxSource": 'ajax/alert_data.txt', "bServerSide": true, "iDisplayLength": 100, "bFilter": false, "aaSorting" : [[2, "desc"]], "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) { if ( aData[2] == "5" ) { $('td', nRow).css('background-color', 'Red'); } else if ( aData[2] == "4" ) { $('td', nRow).css('background-color', 'Orange'); } } }); setInterval (function test() { refreshTable.fnDraw(); }, 1000); }); 

奇怪的是,将DataTable更改为dataTable是导致此失败的根本原因。 这是小D而不是资本D,真烦人……

 $(document).ready( function () { var refreshTable = $('#id_css').dataTable({ "sAjaxSource": 'ajax/alert_data.txt',