我有一个带有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的搜索结果仍然是旧数据。以下是一些屏幕截图:
- 初始搜索的图像
- ajax更改的图像
- 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
。