Поле комментариев Facebook отображается после вызова AJAX - PullRequest
0 голосов
/ 20 марта 2012

Я пытаюсь отобразить поле для комментариев на Facebook вместе с сгенерированным контентом ajax. Я сократил весь мой код до простого примера, когда я что-то упускаю из виду.

Страница моего основного примера http://www.gerdalouw.com/ajax/ajax.html (из выпадающего списка выберите Test Ajax для выполнения)

Затем выпадающий список автоматически рисует http://www.gerdalouw.com/ajax/ax.html <<, это прекрасно работает само по себе, но поле комментария FB не хочет генерироваться с помощью вызова Ajax. </p>

Я пытался использовать FB.XFBML.parse (); функции, но я либо помещаю его не в то место, либо мне не хватает чего-то еще? Я предполагаю, что где-то упускаю что-то очень очевидное?

Здесь я рассмотрел множество возможных решений моей проблемы, но просто не смог найти то, что сработало. Кто-нибудь, кто может помочь, пожалуйста?

Ответы [ 3 ]

5 голосов
/ 21 августа 2012

Это будет работать для вас:

$ ('body'). AjaxComplete (function () {FB.XFBML.parse (document.body)});

Он будет вызывать FB.XFBML.parse для каждого вызова ajax.Так что вам не нужно повторять звонок везде.

3 голосов
/ 21 марта 2012

Я нашел эту статью в блоге, возможно, полезной.http://dominicminicoopers.blogspot.com/2012/03/assigning-url-for-facebook-comments.html

Чтобы сделать ваш, это будет немного другой код.Обратите внимание, что callAjax должен произойти после полной инициализации объекта FB.Я поместил его в функцию window.fbAsyncInit, чтобы убедиться, что FB был правильно загружен и инициализирован.

<div id="fb-root"></div>

<div id="myCommentsDiv"></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/en_US/all.js#xfbml=1&appId=YOUR_APP_ID";
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));
  window.fbAsyncInit = function() {
    FB.init({
      appId : 'YOUR_APP_ID', // App ID
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html' // Channel File
    });

    callAjax();
  };

    function callAjax(yourData) {
      $.ajax({
         url: "YOUR_AJAX_URL",
         data: yourData,
         success: function(){
           var mydiv = $('#myCommentsDiv');
           mydiv.html('<div class="fb-comments" href="' + document.location.href + '" posts="2" width="470">');
           FB.XFBML.parse(mydiv[0]);
         }
      });

    }

  };
</script>
0 голосов
/ 30 июля 2012

Вызвать «FB.XFBML.parse ()» явным образом внутри функции успеха AJAX, которая будет повторно анализировать html и отображать раздел комментариев Facebook

   //facebook comments
    var isFacebook = $data.find('.fb-comments');
    if(isFacebook != 'undefined' ) {
        var scriptText = 'FB.XFBML.parse();';
        var scriptNode = document.createElement('script');
        scriptNode.appendChild(document.createTextNode(scriptText));
        contentNode.appendChild(scriptNode);                   
    } 
...