1

当我尝试按此顺序加载这些函数时,我遇到了一个问题:顺便说一下,我正在使用 Datatables 和 jQuery,我相信你们中的许多人可能已经知道了。

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax();
LookupPts.oTable.fnPageChange(currPage.iPage);

当我知道这是由于 asyncronous 导致的时间问题fnPageChange()后立即尝试运行时失败,我的问题是如何在完成时调用 get 。fnReloadAjax()fnReloadAjaxfnPageChangefnReloadAjax

4

4 回答 4

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 感到困惑。顺便说一句,第一个参数如何加载对象?谢谢大家!

于 2012-05-25T13:20:59.913 回答
1

查看具有此签名的插件文档:fnReloadAjax()

fnReloadAjax = 函数 (oSettings, sNewSource, fnCallback, bStandingRedraw) { }

因此,您可以将回调函数作为第三个参数传递,以便在 AJAX 调用完成时执行。试试这个:

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function() { 
    LookupPts.oTable.fnPageChange(currPage.iPage);
});
于 2012-05-24T21:08:52.517 回答
1

试试这个:

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function() {
    LookupPts.oTable.fnPageChange(currPage.iPage);
}
于 2012-05-24T21:09:54.587 回答
0

您需要实现回调,因为 Javascript 是一种非阻塞语言,不能逐步执行命令。因此,您需要在方法完成后运行的回调。

我只是查看了 ReloadAjax 方法的定义(我从未使用过这个)。如果我得到了正确的,那就是:函数(oSettings,sNewSource,fnCallback,bStandingRedraw))下面的代码应该可以工作:

currPage = LookupPts.oTable.fnPagingInfo();
LookupPts.oTable.fnReloadAjax(null, null, function(){
   LookupPts.oTable.fnPageChange(currPage.iPage);
});
于 2012-05-24T21:10:25.707 回答