Загрузка Facebook fb: изображение профиля через AJAX на сайте Facebook Connect

После загрузки страницы я делаю AJAX-запрос на удаление фрагмента HTML, содержащего теги, представляющие изображение профиля пользователя Facebook. Я добавляю результат к точке в DOM, но логотипы не загружаются, вместо этого я вижу только силуэт по умолчанию.

Вот как я загружаю фрагмент HTML с помощью jQuery

$.ajax({
  url: "/facebookprofiles"
  success: function(result) {
    $('#profiles').append(result);
  }
});

HTML-код, который я добавляю, представляет собой список изменений, например:

<div class="status Accepted">
  <fb:profile-pic class="image" facebook-logo="true" linked="true" size="square" uid="1796055648"></fb:profile-pic>
  <p>
    <strong>Corona Kingsly</strong>My Status Update<br/>
    <span style="font-size: 0.8em">52 minutes ago</span>
  </p>           
</div>

Есть идеи? Я предполагаю, что теги fb не обрабатываются после загрузки dom. Есть ли способ сделать это? Я не вижу никаких исключений или ошибок в моей консоли Firebug.

Спасибо

3 ответа

Решение

Первая попытка

Не уверен, что это очень помогает, но вот статья на Ajax + FBML: https://developers.facebook.com/docs/reference/fbml/

В частности, возможно, вы можете использовать метод setInnerFBML()


Следовать за

Так что я думаю, что функция init анализирует fbml. Таким образом, очевидный вопрос заключается в том, как вы получаете библиотеку javascript в Facebook для повторного анализа fbml (или просто для анализа нового fbml), если вы вставляете fbml после init.

Похоже, эта ветка может помочь: http://forum.developers.facebook.com/viewtopic.php?id=22245

Вот то, что кажется соответствующим кодом, хотя на форуме больше контекста:

if ( FB.XFBML.Host.parseDomTree )
  setTimeout( FB.XFBML.Host.parseDomTree, 0 );

FB.XFBML.Host.parseDomTree не работает для меня. возможно это изменилось в новом API. что работало было:

FB.XFBML.parse(document.getElementById('foo'))

или же

FB.XFBML.parse()

если вы хотите, чтобы вся страница была проанализирована.

Я использую Microsoft-Web-Helpers с MVC3 (которые включают помощников facebook)

синтаксис бритвы

 @Facebook.GetInitializationScripts()

Выходы

<script type="text/javascript">
        window.fbAsyncInit = function () {
            FB.init({ appId: '115631105198333', status: true, cookie: true, xfbml: true });
        };
        (function () {
            var e = document.createElement('script'); e.async = true;
            e.src = document.location.protocol +
            '//connect.facebook.net/en_US/all.js';
            document.getElementById('fb-root').appendChild(e);
        } ());

        function loginRedirect(url) { window.location = url; }
    </script>

Поэтому мне нужно было позвонить

window.fbAsyncInit(); 

Для повторного анализа содержания Facebook.

Другие вопросы по тегам