0

这是关于使用 JQuery Datatables 插件:

我想使用我的服务器端源,但就过滤器而言,如果您知道我的意思,我更愿意将其保留为“DOM 方式”.. 即无需向服务器发出新的 XHR 请求,而是简单地工作关于已经填充的内容。

任何推荐/普遍接受的最佳实践?

4

2 回答 2

0

这可能不是做您想要实现的目标的正确方法,但是当我一直在使用 dataTables 时,我开始使用 CSV 文件在页面首先加载时将表填充到 DOM,然后在完成初始化时数据表。所以只有一个请求。我现在正在做同样的事情,但使用 Google 电子表格而不是 CSV 文件,效果很好!

我会指出,我的桌子非常基本,而且不是很大。

但是我会通过使用 AJAX 首先从您的 php 页面中检索数据,创建一个 HTML 表,然后初始化数据表来解决这个问题。

就像是.....

$.ajax({
   type:'GET',
   url:'../yourdatasource.php',
   success: function(data){
      // Your code to create the HTML table
      $('#yourTable').dataTable();
   }
});

正如我所说,可能有更好的方法可以做到这一点,但我喜欢保持简单。

于 2013-04-13T13:00:07.493 回答
0

我想到了这个,因为我需要这个。但几个小时后,我找到了解决方案。数据表概念有两个方面。左侧是 DOM 处理,右侧是服务器端。这两者的区别是...

DOM 处理:
- 加载源数据
- 处理源数据

服务器端处理
- 加载源数据
- 所有交互都作为 XHR 请求发送。
(来源:Enhancing-HTML-tables-using-a-JQuery-DataTables-pl “在这种模式下,插件只处理与用户的交互,所有处理都在服务器端完成。”)

所以你不能将这两个方面结合在一起,因为 DOM 使用已加载的数据,而服务器端使用实时数据(数据库)进行操作。如果您想在服务器端处理中启用此功能,我认为这是个坏主意,因为在 DOM 中是“过滤”,而在服务器端是“搜索”。如果他们之间最大的区别。如果用户想要“过滤”数据,则无法确保正确的结果。

如果你有很多记录,你应该使用服务器端。
否则加载数据并使用 DOM 工作。

试试这个..
http://datatables.net/ref#bServerSide

我希望这对你有帮助

祝你有美好的一天

编辑

如果要从远程服务器加载数据并过滤已通过 DOM 过滤器加载的数据,可以使用 "sAjaxSource": "xhr.php" 加载数据,但不指定/启用 bServerSide。它工作正常。

http://datatables.net/ref#sAjaxSource

于 2013-07-08T10:56:19.717 回答