如何过滤jquery数据表中被ajax更改的正确数据



我有一个带有jquery数据表的构建表。我的数据表的配置是:

$('#example1').DataTable(tableOption){
order:[[1, 'desc']],
//....
searching: true,  //use default search function
//....
}

加载数据时,会有一个ajax请求来更改一行的数据,例如:

$.ajax({
url:'...',
//....
sucess:function(data){
var newStatusStr= 'Retrieved';  //before was : Published
tr.find('.schedule_status').html(newStatusStr);
tr.find('.schedule_status').attr('title', newStatusStr);        
}
})

ajax完成后,td数据发生了变化(从"Published"变为"Retrieved"(,但当我输入"Publicated"时,datatable的搜索结果仍然是旧数据。以下是一些屏幕截图:

  1. 初始搜索的图像
  2. ajax更改的图像
  3. html元素的图像

通过比较图像1和图像2 ,您可以看到

我查了很多关于数据表的文档,但仍然不知道,我该怎么做才能得到正确的结果?非常感谢!

问题是因为您只更新了UI。您需要更新DataTables用于渲染表的数据。要执行此操作,请使用cell().data()

在你的情况下,它看起来像这样:

success: function(data) {
var newStatusStr = 'Retrieved';
var $td = tr.find('.schedule_status').attr('title', newStatusStr);
var cell = table.cell($td[0]);
cell.data(newStatusStr).draw();      
}

请注意,在上面的示例中,table是对DataTable实例的引用。还要注意,您似乎没有在任何地方定义retrieveStr。我推测应该是newStatusStr

最新更新