2011-11-03 60 views
0

我使用jQuery的AJAX调用数据的HTML返回到使用Datatables jquery插件不支持注入?

$('table #table01').html(data); 

表的空标签<table id=table01></table>呈现并正确填写数据,但是当我要排序的列使用列标题,我得到一个错误消息没有在表

可用的数据难道我做错了什么,或数据表的jQuery插件不注入HTML工作。

感谢

+0

不应该是'$('table#table01')。html(data);'(在选择器中没有空格)? – Clive

+0

Clive,这不会影响问题,因为数据被正确加载。 – mko

回答

2

我知道你不注入html。当然,这不是使用插件的预期方式,因为它实质上已经破坏了目的。它是在说'没有数据',因为你从字面上给插件没有数据存储在某处的缓存中,并且能够排序,分页等。你所做的只是将html附加到表标签(而不是数据表)。如果您使用数据表的内置ajax功能,您只需将表中想要的数据作为json返回(或者如果提供解析,则返回其他格式),并且数据表会自动将其转换为dom对象以显示AND jquery对象以进行排序和这样。

这也让你的生活更加轻松。

P.S.当你使用插件的ajax功能时,它实际上将你的表格封装在一堆div中,并添加了一些元素,所以你点击的标题在技术上并不是“绑定”到你声明的表格HTML如果这是有道理的?它与数据表用于为您呈现表的对象的缓存绑定。

这里是如何如果你想它已经被初始化后,您需要使用API​​将数据添加到表使用Ajax和DT http://datatables.net/release-datatables/examples/data_sources/ajax.html

1

最可能的答案是,你与插件内部搞乱。如果您的图书馆为内容提供了setter方法,请使用它。如果没有,我认为一个更安全的方法是销毁你的表,用你的数据填充一个新数据,然后重新数据化小部件。

4

一个例子:http://datatables.net/api#fnAddData。这使DataTables可以查看您要添加的内容并相应地处理它。直接注入HTML将不起作用,因为DataTables不知道发生了这种情况 - 因此它试图将它在重绘时知道的内容(在这种情况下没有数据)。

另一种方法是在设置完HTML注入之后初始化表格(可能会按照olivieradam666的建议销毁表格)。

Allan