0

我在此处解释的画布页面上嵌入了与 Facebook 的应用程序/游戏完全相同的用例。我想将包含 JSON 对象的 HTTP POST 请求发送到外部托管的站点,并将响应加载到 中iframe,如此处所述

到目前为止,我已经尝试了以下方法:

  • 使用POST form,使用target属性将结果加载到 iframe 中。这里的字段form不是 JSON(如果我尝试转换它们,我将不得不手动发送一个 POST 请求,问题由下一个要点解释)
  • 手动发布 JSON,例如使用 jQuery$.ajax()$.post(),但我无法在我的iframe. 如果我尝试使用 jQuery 手动将其插入 DOM,显然相对链接将不起作用。
  • 在 上设置src属性iframe,但这仅允许 GET 请求。

如您所见,我最多只能获得 3 个所需属性中的 2 个。有谁知道怎么做(或者 Facebook 是怎么做的)?

4

1 回答 1

1

如果有人遇到同样的问题,这就是我发现的:

据此 Facebook 很可能会执行以下操作:他们提交一个(隐藏的)form带有名称“signed_request”的单个参数和编码为 Base64 字符串的完整 JSON 对象。在target属性的帮助下form,响应会自动加载到 中iframeform也可以动态创建,并在例如 jQuery 的帮助下插入到 DOM 中。

另一种解决方案的工作方式如下:首先将带有 JSON 数据的 AJAX 请求发送到外部站点。然后,该站点构建响应,将其缓存并使用可以加载响应的 URL 进行回复。然后将 的src属性iframe设置为此 URL,它使用 HTTP GET 请求加载原始响应。

我使用了第二种方法,因为我必须提交几个带有动态变化数据的请求,并且不想每次都编辑 DOM。我还使用了这个 stackoverflow 答案中的建议,在我的iframe.

于 2013-10-24T09:29:11.473 回答