Datatables Jquery 插件不支持注入?

发布于 2024-12-13 17:30:32 字数 301 浏览 1 评论 0原文

我正在使用 jQuery ajax 调用将数据作为 html 返回到空标签

使用

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

Table 进行渲染并正确填充数据,但是当我想排序时使用列标题的列,我收到一条错误消息 表中没有可用数据

我是否做错了什么,或者 jQuery 的 DataTables 插件不适用于注入的 html。

谢谢

I am using jQuery ajax call to return data as html to an empty tag <table id=table01></table> using

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

Table is rendered and filled with data properly, but when I want to sort columns using column header, I get an error message No data available in table

Am I doing something wrong, or DataTables plugin for jQuery does not work with injected html.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

剑心龙吟 2024-12-20 17:30:32

如果您想在初始化后向表中添加数据,则需要使用 API: http://datatables .net/api#fnAddData 。这允许 DataTables 看到您正在添加的内容并进行相应的处理。直接注入 HTML 是行不通的,因为 DataTables 不知道这种情况已经发生 - 因此它试图在重绘时将其所知道的内容落实到位(在本例中没有数据)。

另一种方法是在设置后初始化表,然后进行 HTML 注入(可能会像 olivieradam666 建议的那样破坏表)。

艾伦

If you want to add data to the table after it has already been initialised you need to use the API: http://datatables.net/api#fnAddData . This allows DataTables to see what you are adding and process it accordingly. Directly injecting HTML won't work, because DataTables has no idea that this has happened - thus it tried to put in place what it does know on a redraw (no data in this case).

The alternative is to initialise the table after you set up the after you do the HTML injection (possibly destroying the table as olivieradam666 suggests).

Allan

别闹i 2024-12-20 17:30:32

据我所知你不会注入html。这当然不是使用该插件的预期方式,因为它本质上违背了目的。它说“没有数据”,因为你实际上没有给插件任何数据来存储在缓存中的某个地方,并且能够排序、分页等。你所做的只是将 html 附加到 table 标签(而不是 datatable )。如果您使用 datatables 的内置 ajax 功能,您只需将表中所需的数据作为 json (或其他格式,如果您提供解析)返回,并且 datatables 会自动将其转换为用于显示的 dom 对象和用于排序和排序的 jquery 对象。这样的。

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

PS,当您使用该插件的 ajax 功能时,它实际上将您的表格包装在一堆 div 中,并向其中添加许多元素,因此您单击的标头在技术上并不是全部“绑定”到您声明的表格在 html 中这是否有意义?它与数据表用来为您呈现表的对象缓存相关联。

这是如何使用ajax和dt的示例
http://datatables.net/release-datatables/examples/data_sources/ajax.html

That I know of you don't inject html. It is certainly not the intended way of using the plugin as it essentially defeats the purpose. It is saying 'no data' because you literally gave the plugin no data to store in a cache somewhere and be able to sort, paginate, etc. All you did was append the html to the table tag ( not the datatable ). If you use the built in ajax functionality of datatables you just return the data you want in the table as json ( or another format if you supply the parsing ) and datatables automatically converts it to both the dom objects for display AND jquery objects for sorting and such.

This also makes your life alot easier.

P.S. when you do use the ajax functionality of the plugin its actually wrapping your table in a bunch of divs and adding a number of elements to it so the header you are clicking on isn't technically all that 'tied' to your table you declared in html if that makes sense? It is tied to a cache of objects that datatables uses to render the table for you.

here is an example of how to use ajax and dt
http://datatables.net/release-datatables/examples/data_sources/ajax.html

我不吻晚风 2024-12-20 17:30:32

最可能的答案是你弄乱了插件的内部结构。如果您的库为内容提供了 setter 方法,请使用它。如果没有,我认为更安全的方法是销毁您的表,用您的数据填充一个新表,然后在其上重新实例化数据表小部件。

The most probable answer is that you are messing with the plugin internals. If your library provides a setter method for content just use it. If not, I think a safer approach would be to destroy your table, fill a new one with your data and then reinstanciate datatable widget on it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文