fbml没有在ajax响应上被解析/呈现

时间:2011-08-09 04:39:41

标签: facebook fbml

我正在开发一个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。

1 个答案:

答案 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

如您所见,表单元素未列为其中之一。这可能是你的问题。