【问题标题】:Use hidden iframe to submit data使用隐藏 iframe 提交数据
【发布时间】:2011-11-29 06:11:12
【问题描述】:

我需要向我的 servlet 提交一些信息。提交此信息后,我将收到来自 servlet 的基于数据的 PDF。我知道我可以构造 URL 并使用 HTTP GET 将参数传递给它。假设我的表单数据太大。那么可以使用隐藏的 iFrame 来做到这一点吗?我将使用隐藏的 iFrame 提交参数,并在我的 servlet 中将 PDF 写入响应流。这会奏效吗?如果它有效,有人可以建议我怎么做吗?

【问题讨论】:

    标签: javascript iframe form-submit


    【解决方案1】:

    您需要将目标设置为要提交到的 iframe。

    <form action='...' name='theform' target='theiframe'>
      . 
      .
      .
      <iframe name='theiframe' src='...'> 
      </iframe>
    </form>
    

    这个论坛帖子有一些细节:http://forums.powweb.com/showthread.php?t=77213

    【讨论】:

    • 如果我理解正确,我不是提交当前加载的页面,而是使用 iFrame 提交信息。因此信息到达服务器。现在它将如何处理响应,它会被加载到这个 iFrame 中吗?如果浏览器已经有PDF插件,会不会显示在iFrame里面?
    • 是的,响应也会发送到 iframe。重读您的问题后,我想知道您为什么不直接发布表单数据而不是使用 iframe。
    • 我不想刷新整个页面。我想当响应类型是 PDF 时我不能使用 AJAX。
    • 好吧,如果您打算下载 PDF,那么页面将不会刷新。如果您打算在页面某些部分的 iframe 中显示 PDF,那么这将起作用。
    • 对于那些想知道的人来说,(在 2017 年)仍然有一些充分的理由使用这种方法......首先,B2B 系统需要一个表单来将 XML 有效负载 POST 到服务器并以重定向的 URL。由于 CORS 限制,AJAX 不可行。服务器到服务器的通信有时无法正常工作,因为生产网络服务器无法访问互联网。
    【解决方案2】:

    嗯,您希望使用 iframe 以哪种方式发送数据?我认为您也仅限于 GET 或 POST 那里。意思是,如果您的数据太大,iframe 将无助于发送您的数据。

    您使用什么服务器后端?您也许可以配置请求数据的最大大小(发布/获取)。

    请查看at this message 了解更多信息。

    【讨论】:

      【解决方案3】:

      在我看来,使用隐藏的 Iframe 方法是非常老派的,几乎就像在 Ajax 方法的伟大时代之前一样。

      您可以使用 jquery Ajax 调用并序列化您的完整表单并传递所有变量。请记住在配置中检查您的请求大小,以防发布达到最大大小。

      【讨论】:

      • 我完全同意,但我必须为不使用 AJAX 的客户端使用表单框架。 :P 我们并不总能得到我们想要的。
      猜你喜欢
      • 2021-08-12
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 2011-08-05
      • 1970-01-01
      相关资源
      最近更新 更多