我正在开发一个Facebook应用程序(使用iframe)。
我的情况是我的页面已完全加载并且它正确显示了fbml内容(请求表单),但是在某些操作上,我进行了ajax调用以从服务器(php)获取更新的fbml内容。它带来了代码,但是 fbml没有被解析/渲染,并且封闭的div保持空白。
以下是我使用ajax获取的fbml:
<fb:serverfbml width="615">
<script type="text/fbml">
<fb:fbml>
<fb:request-form action="some value"
.......//other code.....>
<fb:multi-friend-selector
.......//other code.....
/>
</fb:request-form>
</fbml>
</script>
</fb:serverfbml>
在 ajax响应之后,封闭的div仍为空白,但在firebug中我可以看到其中的代码:
<div id="enclosing_div_id">
<fb:serverfbml width="615"> </fb:serverfbml>
<script type="text/fbml">
<fb:fbml>
<fb:request-form action="some value"
.......//other code.....>
<fb:multi-friend-selector
.......//other code.....
/>
</fb:request-form>
</fbml>
</script>
</div>
虽然,它没有在我的页面上呈现。
请指导。
由于
==============================
更新:
我检查了以下所有内容,但它们似乎并不适用于我的情况。
FB.XFBML.parse();
if ( FB.XFBML.Host.parseDomTree )
setTimeout( FB.XFBML.Host.parseDomTree, 0 );
FB.XFBML.parse(document.getElementById('invite_new_div'), function() {
alert('I rendered');
});
请注意到目前为止我的应用中没有使用过FBJS。
答案 0 :(得分:1)
看起来你只是将fbml代码放入你的div而不是拉入应该在facebook服务器上呈现并作为标准html呈现给你的输出内容。浏览器不知道如何渲染fbml,这就是为什么你只看到一个空div。
更新:发布FB js代码后,它是有道理的。根据这个技巧:
http://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse/
您只能呈现以下fbml标记:
* fb:activity
* fb:add-profile-tab
* fb:bookmark
* fb:comments
* fb:friendpile
* fb:like
* fb:like-box
* fb:live-stream
* fb:login-button
* fb:recommendations
* fb:serverFbml
* fb:profile-pic
* fb:user-status
如您所见,表单元素未列为其中之一。这可能是你的问题。