我使用jQuery的AJAX调用数据的HTML返回到使用Datatables jquery插件不支持注入?
$('table #table01').html(data);
表的空标签<table id=table01></table>
呈现并正确填写数据,但是当我要排序的列使用列标题,我得到一个错误消息没有在表
可用的数据难道我做错了什么,或数据表的jQuery插件不注入HTML工作。
感谢
我使用jQuery的AJAX调用数据的HTML返回到使用Datatables jquery插件不支持注入?
$('table #table01').html(data);
表的空标签<table id=table01></table>
呈现并正确填写数据,但是当我要排序的列使用列标题,我得到一个错误消息没有在表
可用的数据难道我做错了什么,或数据表的jQuery插件不注入HTML工作。
感谢
我知道你不注入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
最可能的答案是,你与插件内部搞乱。如果您的图书馆为内容提供了setter方法,请使用它。如果没有,我认为一个更安全的方法是销毁你的表,用你的数据填充一个新数据,然后重新数据化小部件。
一个例子:http://datatables.net/api#fnAddData。这使DataTables可以查看您要添加的内容并相应地处理它。直接注入HTML将不起作用,因为DataTables不知道发生了这种情况 - 因此它试图将它在重绘时知道的内容(在这种情况下没有数据)。
另一种方法是在设置完HTML注入之后初始化表格(可能会按照olivieradam666的建议销毁表格)。
Allan
不应该是'$('table#table01')。html(data);'(在选择器中没有空格)? – Clive
Clive,这不会影响问题,因为数据被正确加载。 – mko