1
  1. jquery uiアコーディオンをロードする関数があります(異なるIDに基づいて異なるアコーディオン)
  2. 「Facebookコメント」というタイトルのタブをクリックすると、次のようになります。

    $("#myaccordion").bind('accordionchange', function(event, ui) {
        id = $("#myaccordion").data('id');
        switch (ui.newHeader.text()) {
            case "Facebook Comments":
                displayFb(id);
                break;
        }
    });
    
  3. 「displayFB」関数は次のとおりです。

    function displayFb(id){
        $.get('/fbcomments/' + id, function(data) {
            $("#facecomm").append(data);
            });
        }
    

    www.myweb.com/fbcomments/idは次のとおりです。

    <div id="fb-root"></div>
    <script>(function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/es_ES/all.js#xfbml=1";
        fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));</script>
    <div class="fb-comments" data-href="<?php echo '/fbcomments/'.$id ?>" data-num-posts="10" data-width="220"></div>
    
  4. ホームページをロードし、アコーディオンを選択し、Facebookのコメントを開くと、完璧に機能します。ページをリロードして別のアコーディオンを選択した場合は、もう一度完璧に動作します。問題は、ページ全体をリロードせずに、別のアコーディオンまたは同じアコーディオンを再度選択した場合です。アコーディオンは非常によく読み込まれ、すべてのデータ(画像、テキスト、ビデオなどの一部のタブ)が読み込まれますが、Facebookのコメントは表示されません。

  5. 私は試した:

    • #fb-rootメインレイアウトにFacebookのコメントを読み込んでい<script>ます...動作しません。
    • displayFB関数に追加FB.XFBML.parse();しています....機能しません
    • ...に追加FB.XFBML.parse();しても$(document).ready(function(){}機能しません。
  6. 読んでくれてありがとう!

アップデート:

  1. 私はこの小さなデモを作成しました...私はそれを機能させることができません...多分jsfiddleはFacebookのコメントを挿入するのに最適な場所ではありません:私の最初のフィドル

  2. たぶん、私は自分のサイトでcakephpを使用していると言うことが重要です...

  3. 私のコードは最初のアコーディオン呼び出しとdisplayFb関数で完璧に機能することを覚えておいてください...その後、他のアコーディオンに変更すると...クラッシュします...

  4. ありがとうございました!!

UPDATE2:

  1. これはユーザーの別の質問です....私のものと非常によく似ています。彼がアコーディオンを使用していないことを確認してください...しかし、jqueryは一般的です....誰かが私よりも答えをよく理解できるかもしれません...
4

2 に答える 2

0

ブラウザのデバッガまたはフィドラーを使用して、サーバーからの応答を分析できます。Ajax呼び出しがエラーを処理しないため、表示されていないエラーが含まれている可能性があります。

$ .get()を使用する代わりに、$。ajax()を使用し、error()コールバック関数を提供し、Ajax呼び出しから返されるエラーを確認します。このようなもの。(未検証)

データ型を設定する必要がある場合があります。

    jQuery.ajax({
      type: "GET",
      url: "/fbcomments/"+id,
      success: function (response) {
        // Append the data here into the dom
      },
      error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.status);
        alert(thrownError);
      }
    });
  
于 2012-09-02T09:33:38.173 に答える
0

www.myweb.com/fbcomments/idは次のとおりです。

したがって、DIV要素#fb-rootを効果的に追加し、JS SDKを何度もロードして、ドキュメント内に配置することになります…これはお勧めできません。

AJAXを介して要素のみをロードし、後でその新しいコンテンツで実行してみてください。.fb-commentsFB.XFBML.parse

#fb-rootとJSSDKを最初からページに埋め込み、一度だけ

于 2012-09-04T08:49:22.943 に答える