2013-09-24 65 views
0

我和Facebook上的應用程序/遊戲具有完全相同的用例,嵌入在他們的畫布頁explained here上。我想將包含JSON對象的HTTP POST請求發送到外部託管的站點,並將該響應加載到iframe中,如described hereFacebook如何發佈json並在iframe中加載響應?

到目前爲止,我已經試過如下:

  • 發佈了form,使用target屬性加載結果iframe中。該form的字段不是這裏JSON(如果我嘗試將它們轉換,我就必須手動發送POST請求,由下一個子彈點說明了問題)手動
  • 發佈JSON,例如與jQuery的$.ajax()$.post(),但然後我無法使我的iframe響應加載。如果我嘗試用jQuery手動將其插入到DOM中,顯然相對鏈接將不起作用。
  • 設置在iframesrc屬性,但這種只允許GET請求。

正如你所看到的,我只設法得到3個所需屬性中的2個。有誰知道如何做到這一點(或Facebook如何做到這一點)?

回答

1

如果有人遇到同樣的問題,這是我發現:

this,Facebook的最有可能執行以下操作:他們提交(隱藏)form與名爲「signed_request一個參數「和編碼爲Base64字符串的完整JSON對象。在formtarget屬性的幫助下,響應自動加載到iframe中。 form也可以動態創建,並在例如jQuery的幫助下插入到DOM中。

另一種解決辦法的工作方式如下:通過發送JSON數據的AJAX請求到外部站點啓動。然後該站點構建響應,將其緩存並用可加載響應的URL進行回覆。然後將iframesrc屬性設置爲此URL,該URL使用HTTP GET請求加載原始響應。

我用的是第二種方法,因爲我有與動態變化的數據提交多個請求,並且不希望編輯DOM各一次。我還使用this stackoverflow answer的建議在我的iframe中加載響應時不會留下瀏覽器歷史記錄條目。

相關問題