Datatables ajax source但仅限本地(DOM样式)过滤器

时间:2013-04-13 12:10:03

标签: jquery datatables

这是关于使用JQuery Datatables插件:

我想使用我的服务器端源,但就过滤器而言,如果你知道我的意思,我宁愿保持'DOM方式',即不向服务器发送新的XHR请求但只是简单地处理已经填充的内容。

任何推荐/普遍接受的最佳做法?

2 个答案:

答案 0 :(得分:0)

这可能不是你正在尝试实现的正确方法,但是当我一直在使用dataTables时,我开始使用CSV文件在第一次加载页面时将表格填充到DOM完成初始化dataTable。所以只有一个请求。我现在正在做同样的事情,但是使用Google Spreadsheet而不是CSV文件,这非常有效!

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

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

像......这样的东西。

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

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

答案 1 :(得分:0)

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

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

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

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

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

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

我希望这可以帮助你,因为我 祝你有愉快的一天

修改

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

http://datatables.net/ref#sAjaxSource