没有按正确顺序/异步方法调用的方法

时间:2012-05-24 21:04:39

标签: javascript jquery ajax javascript-events jquery-datatables

当我尝试按此顺序加载这些函数时,我遇到了问题: 顺便说一句,我正在使用Datatables和jquery,我相信很多人可能已经知道了。

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

fnPageChange()之后尝试立即运行fnReloadAjax()时失败 我知道这是一个时间问题,因为异步fnReloadAjax, 我的问题是如何在fnPageChange完成时调用fnReloadAjax

4 个答案:

答案 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);
});