datatables - Datatables AJAX.reload 回调数据
问题描述
使用 Datatables(版本:1.10.16)时,我注意到 API 中的数据不会通过ajax.reload
回调立即更新,即使网站说在新数据到达并重新绘制之前不会调用回调。
前面的注释:
- 所有数据格式正确并显示在 之前和之后的表中
ajax.reload
,包括重新加载的新数据。 - 如果我单击重新加载两次,api 会正确看到新数据并
ApplyHeaderFilters
正常工作。
当我说 API 正确查看数据时,我的意思是这样的:
$('#dtTbl').DataTable().column('1:visible').data().unique()
这ApplyHeaderFilters
是回调 onajax.reload
并使用上面的 JS 命令从列中获取唯一值。从 JS 命令返回的数据不反映从重新加载返回的新数据。
这是在准备好的文档中:
batchDT = $('#dtTbl').DataTable( {
deferLoading: true,
pageLength: 25,
pagingType: 'simple_numbers',
scrollx: true,
initComplete: function () {
ApplyHeaderFilters($(this).attr('id'), this.api());
},
ajax: {
url: "mysite.cfm?method=gettabledata",
type: 'POST'
},
columns: [
{ title: "Description", name: "description", data: "description"},
{ title: "Is Active", name: "isactive", data: "isactive"},
{ title: "List Item ID", name: "listitemid", data: "listitemid"},
{ title: "Name", name: "name", data: "name"},
{ title: "Table Ref ID", name: "tablerefid", data: "tablerefid", orderable: false}
]
} );
$("#reload").on('click',function(){
batchDT.ajax.reload(ApplyHeaderFilters('dtTbl', $('#dtTbl').DataTable()));
});
解决方案
由于某种原因,在重新加载完成之前调用了回调。我通过在匿名函数中重新加载我的回调函数来解决这个问题。如果有人知道为什么会这样,请发表评论。我感觉它与闭包以及它们如何处理数据表库中的回调有关。
$("#reload").on('click',function(){
batchDT.ajax.reload(function(){
ApplyHeaderFilters('dtTbl', $('#dtTbl').DataTable());
});
});
推荐阅读
- firebase - Firebase 上的数据驱动缓存与 Cloud Functions SSR + 托管?
- python - Python - 使用方法和函数
- python-3.x - 亚马逊
使用 python 3、请求和 bs4 进行网络抓取
- android - SwitchPreference 在首选项屏幕上以比其他首选项类型更小的字体大小显示
- cordova - 在 ionic 3 中访问全局值
- unreal-engine4 - UE4 BP 无法让球粘在玩家脚上
- c++ - 带有 enable_if 外部类原型的模板类构造函数定义
- c++ - 迭代和比较地图中的值
> C++ - odoo - Change button to red
- ios - 存储在 NSString 中的 SOAP 响应需要被解析