【问题标题】:Multiple AJAX calls for a table initialized more than once?多个 AJAX 调用多次初始化表?
【发布时间】:2011-07-20 13:52:19
【问题描述】:

这个问题很棘手,所以我将发布上下文:

  1. 我在页面上有一个通过 AJAX 加载的片段。
  2. 该页面包含一个表格,该表格将由具有服务器端处理功能的数据表提供支持和填充
  3. 每次我加载包含新表的片段时,我都会告诉 Datatables 从头开始​​启动表,使用 bDestroy : true

问题

当我通过 AJAX 加载新表时,以 JSON 格式获取数据的 AJAX 调用不断堆积。

问题

如何防止这些调用堆积起来并将它们减少到一个?谢谢。


代码示例(根据要求)

/* datatables initializer */

$("#table").dataTable({
  bDestroy : true
, bServerSide : true
, sAjaxSource : "path/to/json.json"
, ...
});

/* script inside the AJAX loaded content. It outputs a <table>. */

$(function() {
  $("body").trigger({ type : "tableready", options : { ... } });
});

【问题讨论】:

  • 粘贴一些代码,让我们看看这一切是如何完成的
  • The AJAX calls that fetch the data as JSON keep piling up 是什么意思?您是在创建新表还是用不同的数据更新一个表?
  • 已更新代码。 @wanovak,是的,表格通过$("#main").load("path/to/new/table.action",function() {}) 输出到前一个表格。

标签: javascript jquery datatables


【解决方案1】:

这个问题的答案是 DataTables 的责任。上面的代码示例缺少问题的原因。

我已经建立了一个类绑定一个事件到一个赋予表格权力的函数。每次我调用检索表的 AJAX 调用时,该函数都会在顶部堆叠另一个绑定,因此会多次调用数据。

解决方案是检查您是否已经绑定了该事件或unbind() 该事件并再次重新bind()

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2015-06-19
    相关资源
    最近更新 更多