当我尝试按此顺序加载这些函数时,我遇到了问题: 顺便说一句,我正在使用Datatables和jquery,我相信很多人可能已经知道了。
currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax();
LookupPts.oTable.fnPageChange(currPage.iPage);
在fnPageChange()
之后尝试立即运行fnReloadAjax()
时失败
我知道这是一个时间问题,因为异步fnReloadAjax
,
我的问题是如何在fnPageChange
完成时调用fnReloadAjax
。
答案 0 :(得分:2)
好的,我把它修好了。
在我发布问题之前,我尝试了与你们所描述的相同的方法,但我仍然遇到了同样的问题。由于某种原因,它不会起作用。
我需要做些什么来解决它?
调试插件后我发现的是参数的顺序不正确。插件的参数是:oSettings,sNewSource,bStandingRedraw,fnCallback。
我注意到在调用方法时,我的参数不是正确的顺序。我的订单是oSettings = object,nNewSource = null,fnCallback = null,bStandingRedraw = function。
诀窍是将参数放入正确的顺序,在参数列表中将回调作为第二个:
currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, function(){
LookupPts.oTable.fnPageChange(currPage.iPage);
console.log("finished loading the page details");
}, null);
我对第一个参数oSettings感到困惑。顺便说一下第一个参数是如何加载对象的? 谢谢大家!
答案 1 :(得分:1)
查看plugin documentation fnReloadAjax()
有此签名:
fnReloadAjax = function(oSettings,sNewSource,fnCallback,bStandingRedraw) {}
因此,您可以将回调函数作为第三个参数传递,以便在完成AJAX调用时执行。试试这个:
currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function() {
LookupPts.oTable.fnPageChange(currPage.iPage);
});
答案 2 :(得分:1)
试试这个:
currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function() {
LookupPts.oTable.fnPageChange(currPage.iPage);
}
答案 3 :(得分:0)
您需要实现回调,因为Javascript是一种非阻塞语言,并且不能逐步执行命令。因此,您需要在方法完成后运行的回调。
我刚看了一下ReloadAjax方法的定义(我从未使用过这个)。如果我得到了正确的:函数(oSettings,sNewSource,fnCallback,bStandingRedraw)),以下代码应该有效:
currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function(){
LookupPts.oTable.fnPageChange(currPage.iPage);
});