javascript - 重新加载多个数据表的内容

标签 javascript jquery ajax datatable datatables

有人知道或知道如何重新加载页面内多个数据表的内容吗? 这是我到目前为止初始化数据表的代码:

$('.notifications_list_table').dataTable( {          
    "aaSorting": [[ 0,"desc" ]],         
    "sPaginationType": "full_numbers",           
    "aoColumns": [null,null],            
    "bLengthChange": false        
}); 

如您所见,我使用一个类来识别和初始化所有数据表。现在,当服务器上至少一项内容发生更改时,我想将它们全部更新。

我怎样才能做到呢?我看到 fnAjaxReload 可用于在一个 DataTable 中加载数据,但在这里,我想在一次 ajax 调用中获取多个“aaData”...

最佳答案

因此,除非您使用长轮询或 Websocket,否则客户端无法意识到服务器端的更改。但您始终可以按照设定的时间间隔进行更新;对于较长的间隔,请求的“费用”是微不足道的。对于短时间间隔(每秒一次或其他),它更像是一个讨论点。

尽管 DataTables 站点有一些简化的示例,但我认为将初始化对象存储到变量是一个很好的做法:

var notificationTables = $('.notifications_list_table').dataTable( {          
    /* initialization parameters */      
}); 

现在只需在对象上调用正确的函数来更新表即可。我正在使用服务器端处理,所以我像这样重新绘制:

notificationTables.fnDraw(false);

示例代码中缺少的是获取数据的方式。您提供的代码片段假定数据已在 DOM 中。因此,我上面提供的代码实际上不会执行任何操作来获取新数据。

在我的应用程序中,我就是这样做的(如果这不是最好的方法,我很高兴有人向我展示更好的东西!这里没有骄傲!):

  1. 我创建了一个初始化对象,其中包含所有表使用的参数。
  2. 我为每个具有自定义值(例如数据源 URL、列标签、fnRowCallback 函数等)的单独表创建一个单独的新对象,并使用 jQuery.extend() 将其连接到基础对象。 ,生成一个包含所有必需参数的新的完整对象。
  3. 像这样初始化:var tableOne = $('#tableOne').dataTable(tableOneParams); (等等;每 table 一个)。
  4. 我只是单独调用更新。我的方法有点复杂,因为它有一些带有暂停/恢复和空闲检测内容的轮询机制,但它实际上可以归结为一个幻想版本:
var getNewDT = function() {
  tableOne.fnDraw(false);
  tableTwo.fnDraw(false);
};

然后,当我需要更新它们时,只需调用 getNewDT() 即可。 .

希望能有所帮助。 ;-)

关于javascript - 重新加载多个数据表的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9912618/

相关文章:

javascript - 指针事件 IE11/Surface

javascript - 验证码成功后如何重定向

javascript - Backbone动态保存属性

javascript - 如何区分单击提交按钮和在输入中输入以提交表单?

javascript - 在多页面网站上使用react

javascript - 我怎样才能重写这些 JavaScript promise 而不那么复杂?

javascript - 使用javascript检测浏览器选项卡切换/浏览器最小化

javascript - IE : indexOf results in "object doesn' t support this property or method"

python - 尝试在 Django Post LIKE DISLIKE 功能上使用 Ajax 时出现页面未找到错误

javascript - 如果禁用了 javascript,如何隐藏未被 <noscript> 标记包围的某些 html?