0

基本的に、現在のコンテンツをフェードアウトし、コンテンツをajaxリクエストの結果に置き換えてから、コンテンツをフェードインします.

私の関数はほとんどのページで正常に動作しますが、何らかの理由で特定のリクエストでコンテンツがロードされていますが、ajax 成功関数が呼び出されていないため、コンテンツはロードされていますが、非表示のままです。

これが私のコードです。診断の目的で、ajaxの成功関数をアラートに置き換えましたが、これは同じページで実行されていません(ただし、ajaxコンテンツはロードされています):

var loadUrl=b_url+page;
        if (History.enabled) {History.pushState({state:2}, page, "/"+page);}
        window.name=page;
        $.ajax({
            cache: false,
            async: false,
            type: "POST",
            url: loadUrl,
            dataType: "html",
            beforeSend: function() {
                 $('.contentarea').animate({
                        'opacity'   : 0
                    }, 180, 'jswing', function(){
                            $('#mainc').hide(350, 'jswing');
                });
             },
            success: function(response) {
                $('#mainc').html(response);
                alert('success')
            },
            failure: function(msg) {
                alert('FAIL');
            }
        });

上記のコードでは、成功または失敗のメッセージが問題のページに表示されていませんが、次の行を削除すると:

$('#mainc').html(response);

その後、成功メッセージが表示されます。読み込まれているコンテンツは html のページであり、(ドキュメント内にあるという意味で) うまく読み込まれているように見えます。すべてのページバーは正常に動作するため、返される内容に問題があると思われます (ただし、ドキュメントには正常にロードされます) - ロードされるコンテンツは、codeigniter を使用してパーシャルのロードから構築されるため、ここで私の質問はどのように行われると思いますか?何が問題なのかを突き止めます。ドキュメントの準備ができている関数にこれを追加しようとしましたが(同様の投稿を読んだことがあります)、何もしません:

$(document).ajaxError(function(e, xhr, settings, exception) {
alert('error in: ' + settings.url + ' \n'+'error:\n' + xhr.responseText );
}); 

ここで問題が何であるかを見つける方法についてのアイデアはありますか?

4

2 に答える 2

2

.ajaxComplete の場合、読み込まれる要素のページ読み込みの一部として登録する必要があります。

$('#mainc').ajaxComplete(function(){ alert('bob')})

.animate 関数内に埋め込まれるのではなく、イベントにすることができます。それ以外の場合は次の行:

$("#mainc").load(loadUrl);

イベントリスナーを登録する代わりに、oncomplete 関数を直接含めることができます。例えば

$("#mainc").load(loadUrl, function(){ alert('bob' });
于 2012-09-26T16:00:44.397 に答える
0

以下は、非同期手順を開始します。

$("#mainc").load(loadUrl);

ajaxCompleteこれは、次の行のリスナーが登録される前に完了する可能性があります。を起動する前にリスナーをアタッチできますload

于 2012-09-26T16:06:51.460 に答える