1

我在页面中使用 jQuery 和 DataTables,它从服务器获取数据并非常愉快地填充表格。

我需要进行更改以确保来自 dataTables 库的从服务器获取数据的请求以定义的顺序发生。我还需要能够在需要时触发更新(所有表的正确顺序) - 所以需要一个函数来触发适当的代码。

我的页面中有 3 个表格。我尝试在第一个表的回调方法中为下一个表添加一个 table.fnReloadAjax() 调用,这似乎只触发前两个表的刷新或根本不触发。

我还尝试创建一个函数来调用 3 个单独的函数,该函数依次在每个表上调用 fnReloadAjax(),但是由于异步,对服务器的请求顺序会有所不同。

我已经尝试过,这似乎并没有达到我希望的效果。希望这能说明我的目标:

firstTable= $('#firstShipment').dataTable({
    "bServerSide": true,
    ...<snip>...
    "fnInfoCallback": function (oSettings, iStart, iEnd, iMax, iTotal, sPre) {
         secondTable.fnReloadAjax();
    }
});
secondTable= $('#firstShipment').dataTable({
    "bServerSide": true,
    ...<snip>...
    "fnInfoCallback": function (oSettings, iStart, iEnd, iMax, iTotal, sPre) {
         thirdTable.fnReloadAjax();
    }
});
thirdTable= $('#firstShipment').dataTable({
    "bServerSide": true,
    ...<snip>...
    "fnInfoCallback": function (oSettings, iStart, iEnd, iMax, iTotal, sPre) {
         //this is the last table, do nothing on completion
    }
});

我对在 dataTables 的 init 中定义的解决方案(我在上面尝试做的事情)或我可以定期调用以强制进行有序更新的单独函数感到非常满意。

4

1 回答 1

0

为了按特定顺序填充数据并使其同步,您可以分两步执行数据检索。第一个,使用参数async: false进行同步 ajax 调用。看:

http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings

获得结果后,您可以使用 Javascript 数组数据源为您的数据表填充数据。看:

http://datatables.net/release-datatables/examples/data_sources/js_array.html

我希望这可以帮助你。

于 2013-07-15T09:33:32.363 回答