2012-05-24 47 views
1

我尝试按以下顺序加载这些函数时遇到问题: 顺便说一句,我使用的数据表和jquery,我相信你们中的很多人可能已经知道了。未按正确顺序调用方法/异步方法

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

当我尝试后立即fnReloadAjax() 运行fnPageChange()我知道这是一个时间问题,由于asyncronous fnReloadAjax失败, 我的问题是我怎么能有fnPageChange被调用时fnReloadAjax完成。

回答

0

你需要实现一个回调的JavaScript是一种非阻塞的语言和不工作的命令,一步一步来。因此,您需要在方法结束后执行回调。

我刚才看了ReloadAjax方法的定义(我从来没有用过这个)。如果我得到了正确的一个是这样的:function(oSettings,sNewSource,fnCallback,bStandingRedraw))下面的代码应工作:

currPage = LookupPts.oTable.fnPagingInfo(); 
LookupPts.oTable.fnReloadAjax(null, null, function(){ 
    LookupPts.oTable.fnPageChange(currPage.iPage); 
}); 
+0

好吧,我修好了。 – robasc

1

综观plugin documentationfnReloadAjax()具有这个签名:

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

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

currPage = LookupPts.oTable.fnPagingInfo(); 
LookupPts.oTable.fnReloadAjax(null, null, function() { 
    LookupPts.oTable.fnPageChange(currPage.iPage); 
}); 
1

试试这个:

currPage = LookupPts.oTable.fnPagingInfo(); 
LookupPts.oTable.fnReloadAjax(null, null, function() { 
    LookupPts.oTable.fnPageChange(currPage.iPage); 
} 
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混淆。顺便说一下,第一个参数如何加载对象? 谢谢大家!