微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JQuery DataTable排序与Ajax冲突

如何解决JQuery DataTable排序与Ajax冲突

| 所以它来了: 我使用dataTable插件显示我的html表。当我单击列标题时,该列已排序。它运作良好。但是,当我尝试实现Ajax时,它开始出现时髦的行为。我可以通过Ajax删除DOM文档,并且该行从表中消失。但是在那之后,如果我单击表的标题,该行会突然返回并显示,即使该行已在数据库删除! dataTable在这里发生了什么?我怀疑jQuery remove()不会从页面的DOM中删除实际的元素,以某种方式使其保留在那里但没有得到显示。因此,当我单击标题时,数据表认为该行仍然存在。我被困。谁能帮我这个?非常感谢您的帮助。谢谢     

解决方法

        这里可能发生许多事情之一。 您是否正在使用带有\“ fnServerData \”的缓存管道? 我猜想当您从数据表中删除该行时,您也在进行ajax调用,以将其从数据库中删除。您确定要完成的操作,然后再尝试排序吗? 除了执行.remove()之外,还可以对删除回调的成功回调执行$(\“#tableID \”)。fnDraw()。这将导致数据表从数据库中获取新数据并为您呈现该表。 当您使用\“ bServerSide \”:true作为数据表的选项时,可能最好的做法是不通过jquery.remove()或其他dom操作方法删除dom元素,而是让datatable.fnDraw()处理添加和删除根据从数据库中获取的数据为您创建列。     ,        这是一个老问题,所以我不确定当时的api是否可用。这个问题似乎类似于这个SO问题,但是没有细节很难说。 您的问题可能是从DOM中删除了数据却没有从DataTable中删除它。他们的文档说要以这种方式删除数据:
var table = $(\'#example\').DataTable();
 
$(\'#example tbody\').on( \'click\',\'img.icon-delete\',function () {
    table
        .row( $(this).parents(\'tr\') )
        .remove()
        .draw();
} );
DOM使用
.draw()
命令反映更改,并通过
.row().remove()
api调用删除带有数据表的行。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。