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。

+0

您是否尝试执行该FB解析代码并且警报没有弹出?如果是,您是否使用正确的div ID?第一个html示例使用id =“enclosing_div_id”,但FB解析正在寻找id为“invite_new_div”的元素。 – evasilchenko

+0

是的,弹出警报,但div仍然是空白。是的,div ID是正确的;在之前的代码中,我只是使用了示例。 – Prashant

看起来你只是把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 

正如你所看到的表单元素没有被列为其中之一。这可能是你的问题。

+0

我明白,但当页面加载时,它完全解析并呈现我在这里提到的相同的fbml代码(我从ajax响应中获得的代码)。我相信这是因为Facebook在页面加载时分析fbml,但问题是,如何在页面完全加载后的一段时间内,在ajax响应中动态解析和呈现fbml? – Prashant

+0

对,因为你的应用程序要么解析fbml,要么吐出html,要么Facebook服务器解析fbml,当你在iframe中加载页面时,吐出作为html。请向我们提供更多信息,我会尽力帮助您进一步解决问题。 – evasilchenko

+0

@ DeviantSeev:Facebook文档(上面的链接)说fb:serverfbml可以呈现。但我不确定是否可以呈现其内部的fb:request-form。这就是我卡住的地方。无论如何感谢迄今为止所有的帮助.. – Prashant