3

jQuery の AJAX 関数について簡単な質問があります。

私が ajax 呼び出しを行う方法は、次の行に沿って何かを行います。

$.ajax({
    type: "GET",
    url: "/wordpress/wp-admin/admin-ajax.php",
    dataType: 'html',
    data: ({ action: 'loadHomePage'}),
    beforeSend: function() {
        document.getElementById('loading').style.visibility = 'visible';
    },
    complete: function(){
        FB.Canvas.setAutoGrow(false);
        FB.Canvas.setSize({height:600});
        setTimeout(function(){
            FB.Canvas.setAutoGrow(true);
        }, 100);
    },
    success: function(data){
        data = $.trim(data);
        $('#ajax-content').hide().empty().fadeIn('slow').html(data);
        FB.Canvas.scrollTo(0,0);                
    }
});

問題は、この特定の例では、ページ ナビゲーションに ajax を使用する Facebook iframe 内の完全な Web サイトであり、ページ間を移動すると、コンテンツが複数回フェードするように見えるため、部分的にフェードイン - 完全な部分に入る必要がありますか?

サイズ変更は元々完了していましたが、移動したことで違いが出たと思いますが、プラセボ効果かどうかはわかりません....

もしそうなら、私は次のことを行うことでそれを達成しますか?

complete: function(data){
    // fade in etc

次に、ソース コードの順序で完了が成功よりも前に来る場合、これを実行しても問題ないでしょうか。それとも、成功してから完了するなど、順序が重要なのでしょうか?

4

2 に答える 2

5

「完了」が発生し、「成功」と「エラー」の両方 (要求に適した方) の後に要求サイクルが終了し、そのタイミングは、ソース コードで宣言する場所とは無関係です。

完全な関数は「データ」パラメーターを受け取りません。そのため、アクションがデータに依存している場合、そこでは機能しません。

于 2012-08-28T13:47:10.950 に答える
4

completesuccessまたはerrorコールバックが実行された後に実行されます。

だからあなたはそれらの可能なチェーンを得るでしょう

success-->complete

error-->complete

成功した呼び出しのみを処理したい場合があります。

于 2012-08-28T13:44:27.787 に答える