在Facebook Connect网站上通过AJAX加载Facebook fb:profile-pic

mbr*_*ort 6 jquery facebook fbml

页面加载后,我正在发出一个AJAX请求来下载一个HTML块,其中包含代表Facebook用户个人资料图片的标签.我将结果追加到DOM中的一个点但是徽标没有加载,而我看到的只是默认的轮廓.

这里只是我如何用jQuery加载HTML块

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

我附加的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>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我假设加载dom后没有处理fb标签.有没有办法让这种情况发生?我在Firebug控制台中没有看到任何异常或错误.

谢谢

cka*_*ass 8

第一次尝试

不确定这是否有用,但这里有一篇关于Ajax + FBML的文章:http://wiki.developers.facebook.com/index.php/FBJS#Creating_FBML_Elements

特别是,也许你可以使用setInnerFBML()方法


跟进

所以我认为init函数解析fbml.所以显而易见的问题是,如果在init之后插入fbml,如何让facebook的javascript库重新解析fbml(或者只是解析新的fbml).

看起来这个主题可能有所帮助:http: //forum.developers.facebook.com/viewtopic.php?id = 22245

虽然论坛上有更多背景信息,但这似乎是相关代码:

if ( FB.XFBML.Host.parseDomTree )
  setTimeout( FB.XFBML.Host.parseDomTree, 0 );
Run Code Online (Sandbox Code Playgroud)


Dan*_*iel 6

FB.XFBML.Host.parseDomTree对我不起作用.也许它已经改变了新的api.做了什么工作:

FB.XFBML.parse(document.getElementById('foo'))
Run Code Online (Sandbox Code Playgroud)

要么

FB.XFBML.parse()
Run Code Online (Sandbox Code Playgroud)

如果你想要解析整个页面.