【问题标题】:Specification advises to "redirect the response [of a form] to a hidden HTML iframe", how to achieve this?规范建议“将 [表单] 的响应重定向到隐藏的 HTML iframe”,如何实现这一点?
【发布时间】:2024-04-12 07:55:02
【问题描述】:

CMIS specification 说明了对提交的 HTML 表单的 HTTP 响应:

一般来说,响应对最终用户没有用处。
因此,客户端应将响应重定向到隐藏的 HTML iframe。
iframe 的 onLoad 事件可用作操作状态通知。

(上面的“客户端”是指浏览器中的网页)

我看不出如何在 HTML 中“将响应重定向到隐藏的 HTML iframe”。

表单不能在隐藏的 iframe 中,因为表单需要可见。如果作者打算在提交表单后隐藏 iframe,则措辞会有所不同。

我想知道他们为什么不推荐使用 ajax,但这不是问题所在。我想听从他们的建议,或者向他们证明他们的建议毫无意义。

谁能给我一个“将响应重定向”到 iframe 的示例?
或者是规范真正想说的一个例子?
还是根本无法实现?

【问题讨论】:

    标签: html post iframe cmis forms http-post


    【解决方案1】:

    仅当应用程序托管在 CMIS 存储库上时,Ajax 才能正常工作,因为相同的源策略。 即使应用程序是从不同的主机提供的,隐藏框架方法也可以工作。

    这是一个例子:

    <script type="text/javascript">
    function createCallback() {
      ...
    }
    </script>
    
    <form action="..." method="POST" target="createResult">
      ...
    </form>
    
    <iframe name="createResult" style="display:none;" onload="createCallback()"></iframe>
    

    这是一个完整的例子: https://svn.apache.org/repos/asf/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings-war/src/main/webapp/web/index.html

    【讨论】:

    • 哇,我不知道form的“target”属性,非常感谢!还要感谢 OpenCMIS Web 界面,我在不知道存在的情况下启动了 WebCMIS nicolas-raoul.github.io/WebCMIS。有没有地方公布过这样的新进展?谷歌搜索“OpenCMIS Web 界面”只返回 5 个结果,都是源代码。