fbml没有得到解析/呈现在AJAX响应
我正在开发一个facebook应用程序(使用IFRAME)。fbml没有得到解析/呈现在AJAX响应
我有一个情况,我的网页是完全加载,它显示正确的fbml内容(请求形式),但随后在一些行动,我做ajax调用从服务器(PHP)获取更新的fbml内容。它带来的代码,但fbml没有得到解析/呈现,封闭的div保持空白。
下面是我用ajax获取的FBML:Ajax响应
<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>
后,封闭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>
虽然,它不会在我的页面上呈现。
请指导。
感谢
==============================
UPDATE:
我已经检查了以下所有内容,但他们似乎没有在我的案件中工作。
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。
看起来你只是把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
正如你所看到的表单元素没有被列为其中之一。这可能是你的问题。
我明白,但当页面加载时,它完全解析并呈现我在这里提到的相同的fbml代码(我从ajax响应中获得的代码)。我相信这是因为Facebook在页面加载时分析fbml,但问题是,如何在页面完全加载后的一段时间内,在ajax响应中动态解析和呈现fbml? – Prashant
对,因为你的应用程序要么解析fbml,要么吐出html,要么Facebook服务器解析fbml,当你在iframe中加载页面时,吐出作为html。请向我们提供更多信息,我会尽力帮助您进一步解决问题。 – evasilchenko
@ DeviantSeev:Facebook文档(上面的链接)说fb:serverfbml可以呈现。但我不确定是否可以呈现其内部的fb:request-form。这就是我卡住的地方。无论如何感谢迄今为止所有的帮助.. – Prashant
您是否尝试执行该FB解析代码并且警报没有弹出?如果是,您是否使用正确的div ID?第一个html示例使用id =“enclosing_div_id”,但FB解析正在寻找id为“invite_new_div”的元素。 – evasilchenko
是的,弹出警报,但div仍然是空白。是的,div ID是正确的;在之前的代码中,我只是使用了示例。 – Prashant