Загрузка Facebook fb: profile-pic через AJAX в Facebook Connect site

118
9

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


Спасибо

спросил(а) 2021-01-19T18:27:24+03:00 6 месяцев, 1 неделя назад
1
Решение
134

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


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


В частности, возможно, вы можете использовать метод 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 );

ответил(а) 2021-01-19T18:27:24+03:00 6 месяцев, 1 неделя назад
118

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


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

или

FB.XFBML.parse()

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

ответил(а) 2021-01-19T18:27:24+03:00 6 месяцев, 1 неделя назад
45

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


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


 @Facebook.GetInitializationScripts()

ouputs


<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.

ответил(а) 2021-01-19T18:27:24+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема