【发布时间】:2018-10-19 11:15:31
【问题描述】:
从后端 API 我得到一个像这样的 URL http://example.com/thispage.html 和不同的参数 lang=fr 和 reference=%2BParam
表单(在 iframe 内)看起来像:
<form id="myform" method="POST" action="http://example.com/thispage.html">
<input name="lang" value="fr" type="hidden" />
<input name="reference" value="%2BParam" type="hidden"/>
...
</form>
JavaScript 文件如下所示:
$("#myform").submit();
提交表单时,url 不符合预期。它看起来像:
http://example.com/thispage.html?lang=fr&reference=%252BParam
而不是
http://example.com/thispage.html?lang=fr&reference=%2BParam
为什么iframe内的form重定向失败,重定向时参数被编码?
【问题讨论】:
-
因为在未编码的字符串中通常没有编码字符。 JQuery(或者可能是浏览器,不确定)可能只是对您提供的任何 URL 进行编码。否则,如果那里有非 URL 字符会怎样?
-
是的,就像 référence :)
-
如果表单确实是作为 POST 请求发送的,则根本不应该在 URL 中发送参数。
-
浏览器不是在你的字符串中寻找已经编码的数据,它只是对你给它的内容进行编码。如果它已经编码,它会重新编码。那不是浏览器的问题,而是您的应用程序的问题。表单最初的想法是捕获用户数据,用户通常不会输入编码数据。这不是浏览器的编码系统旨在处理的事情。但是,正如 max 所说,您的表单应该是由 POST 提交的。所以无论如何你都不应该有任何 URL 参数。但这并不重要,因为 POST 变量将以相同的方式进行编码。
-
如果您要这样做,您应该在将参数添加到表单字段之前手动解码原始 URL 中的参数。
标签: javascript jquery redirect