【发布时间】:2017-07-28 17:43:06
【问题描述】:
我在页面上有一个 HTML 表单。该方法是 POST,但我手动将 GET 参数添加到 URL 字符串,具体取决于用户单击的按钮。但是当提交表单时,GET 会从 URL 中剥离。
我真的对此感到困惑。这种方法在过去曾多次奏效,而这种实际形式 本身曾经也能正常工作。突然,完全相同的(以前工作的)代码不起作用。
我正在使用 Firefox Web Developer 工具查看请求中传递了哪些参数,并且没有 GET 的迹象。
<form method="post" target="_blank">
<input type="hidden" name="report" value="abc">
...a couple Select form fields...
<input type="submit" action="reports.php?format=PDF" value="Go">
[<input type="submit" action="reports.php?format=preview" value="Web Preview">]
</form>
基本上,如果他们点击“Go”,他们应该会得到一个 PDF,如果他们点击“Web Preview”,他们会得到与网页相同的报告;但是在处理结束时没有收到“格式”参数。
(我也在多个浏览器中尝试过。)
编辑添加:我可以确认在处理端正在接收 POST 数据。仅缺少 GET。
编辑添加:
如果我将操作移动到<form> 标签,它会起作用。当然,这会阻止我有两个按钮来做两件事,所以它不能解决问题,但它是可能发生的事情的线索。这确实有效:
<form method="post" action="reports.php?format=PDF" target="_blank">
<input type="hidden" name="report" value="abc">
...a couple Select form fields...
<input type="submit" value="Go">
<!-- [<input type="submit" action="reports.php?format=preview" value="Web Preview">] -->
</form>
【问题讨论】:
-
想知道是否有一些奇怪的服务器设置可以做到这一点 - 特别是因为代码从它工作时起没有改变。运行 IIS 7
-
我的第一个猜测也是服务器端;第二个猜测是浏览器更新。你知道 IIS 框是否自动更新?
-
一位同事在 IE 8 中对其进行了测试(我在 Firefox 和 Chrome 中进行了测试),因此很确定它不是浏览器。服务器确实会不时更新,但通常并不可怕。但我也不知道这个问题是什么时候开始的/嗯...
-
新信息添加到问题。它似乎仅在“操作”属性位于“提交”按钮上时才会发生。将其移至 Form 标签即可正常工作。