2011-08-09 65 views
0

我正在開發一個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

回答

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 

正如你所看到的表單元素沒有被列爲其中之一。這可能是你的問題。

+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