Загрузка Facebook fb: изображение профиля через AJAX на сайте Facebook Connect - PullRequest
6 голосов
/ 23 сентября 2009

После загрузки страницы я делаю 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 ]

8 голосов
/ 23 сентября 2009

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

Не уверен, что это сильно поможет, но вот статья на Ajax + FBML: http://wiki.developers.facebook.com/index.php/FBJS#Creating_FBML_Elements

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


Продолжение

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

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

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

if ( FB.XFBML.Host.parseDomTree )
  setTimeout( FB.XFBML.Host.parseDomTree, 0 );
6 голосов
/ 27 мая 2010

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

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

или

FB.XFBML.parse()

если вы хотите проанализировать всю страницу.

0 голосов
/ 30 июля 2011

Я использую 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.

...