Datatables AJAX.reload回调数据

Datatables AJAX.reload回调数据,datatables,Datatables,在使用Datatables(版本:1.10.16)时,我注意到API中的数据不会通过ajax立即更新。在回调中重新加载,即使站点说在新数据到达并重新绘制之前不会调用回调 预先说明: 所有数据的格式都正确,并在ajax.reload之前和之后显示在表中,包括来自重新加载的新数据 如果我单击“重新加载”两次,api将正确查看新数据,并且ApplyHeaderFilters工作正常 当我说API正确查看数据时,我的意思是: $('#dtTbl').DataTable().column('1:visib

在使用Datatables(版本:1.10.16)时,我注意到API中的数据不会通过
ajax立即更新。在回调中重新加载
,即使站点说在新数据到达并重新绘制之前不会调用回调

预先说明:

  • 所有数据的格式都正确,并在
    ajax.reload
    之前和之后显示在表中,包括来自重新加载的新数据
  • 如果我单击“重新加载”两次,api将正确查看新数据,并且
    ApplyHeaderFilters
    工作正常
  • 当我说API正确查看数据时,我的意思是:
    $('#dtTbl').DataTable().column('1:visible').data().unique()

    ApplyHeaderFilters
    是对
    ajax.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()));
        });
    

    由于某种原因,在重新加载完成之前调用了回调。我修复了这个问题,将我的回调函数包装在anon函数中的reload中。如果有人知道为什么会这样,请评论。我觉得这与闭包以及它们如何处理datatables库中的回调有关

    $("#reload").on('click',function(){
        batchDT.ajax.reload(function(){
              ApplyHeaderFilters('dtTbl', $('#dtTbl').DataTable());
        });
    });