1

これらの関数をこの順序でロードしようとすると、ここで問題が発生します。ちなみに、私はDatatablesとjQueryを使用していますが、これはおそらく多くの人がすでに知っていると思います。

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

これが非同期によるタイミングの問題であることがわかったfnPageChange()直後に実行しようとすると失敗します。私の質問は、完了時にgetを呼び出す方法です。fnReloadAjax()fnReloadAjaxfnPageChangefnReloadAjax

4

4 に答える 4

2

わかりました、まあ、私はそれを修正しました。

問題を投稿する前に、皆さんから説明されたのと同じ方法を試しましたが、それでも同じ問題が発生しました。何らかの理由で機能しません。

それを修正するために私は何をしなければなりませんでしたか?

プラグインをデバッグした後に分かったのは、引数の順序が正しくないということでした。プラグインのパラメーターは、oSettings、sNewSource、bStandingRedraw、fnCallback です。

メソッドが呼び出されたときに、引数の順序が正しくないことに気付きました。私の注文は、oSettings = object、nNewSource = null、fnCallback = null、bStandingRedraw = function でした。

トリックは、コールバックをパラメーター リストの 2 番目として、次のように正しい順序で引数を配置することでした。

                        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 呼び出しの完了時に実行される 3 番目のパラメーターとしてコールバック関数を渡すことができます。これを試して:

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 メソッドの定義を見ただけです (これは使用したことがありません)。そして、これである正しいものを取得した場合: function ( 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 に答える