Get正在从HTML表单中剥离

Get正在从HTML表单中剥离,html,forms,get,Html,Forms,Get,我在页面上有一个HTML表单。该方法是POST,但我将根据用户单击的按钮手动向URL字符串添加GET参数。但是当表单提交时,GET将从URL中剥离 我真的很困惑。这种方法在过去已经使用了很多次,而这种实际的形式本身也可以很好地使用。突然,完全相同的以前工作的代码不工作了 我使用Firefox Web Developer工具查看请求中传递了哪些参数,并且没有GET的迹象 <form method="post" target="_blank"> <input type="h

我在页面上有一个HTML表单。该方法是POST,但我将根据用户单击的按钮手动向URL字符串添加GET参数。但是当表单提交时,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预览,他们会得到与网页相同的报告;但是在事物的处理端没有接收到format参数

我也在多个浏览器中尝试过

编辑添加:我可以确认正在处理端接收POST数据。只有GET不见了

编辑以添加: 如果我将动作移动到标记,它就会工作。当然,这阻止了我使用两个按钮来做两件事,所以这并不能解决问题,但这是可能发生的事情的线索。这确实有效:

<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>

我首先要检查的是验证数据是否确实作为POST请求发送。如果出于任何原因,浏览器认为表单应该使用GET请求,它会很高兴地删除并替换硬编码的查询字符串

我的建议是在$\u POST和$\u GET in reports.php上进行var\u转储,以明确了解浏览器实际传输的内容。输出中可能有一些线索

如果$\u GET数据确实丢失了,那么我会检查以验证是否没有人在服务器上设置重写规则来从PHP请求中删除查询字符串,甚至删除对该特定页面的请求。据我所知,IIS通常不会从POST请求中删除查询字符串,因为这会违反既定的标准,但总是有可能手动添加规则来完成相同的任务。

已解决-在提交中,操作属性无效。我应该用动作:

<input type="submit" formaction="reports.php?format=PDF" value="Go">

沿途的某个地方,对各种web浏览器的更新一定已经停止接受操作。

POST数据确实正在传递var_dump POST:array3{[report]=>string3 abc[pd_user]=>string3 all[pd_period]=>string3 139}var_dump GET:array0{}想知道是否有一些奇怪的服务器设置可以做到这一点-尤其是代码从工作时起没有改变。运行iis7myfirstguess也可能是服务器端;第二个猜测是浏览器更新。你知道IIS框是否自动更新吗?一位同事在IE8中测试了它,我在Firefox和Chrome中测试了它,非常确定它不是浏览器。服务器确实会不时更新,但并不经常更新。但我也不知道这个问题是什么时候开始的/Hmmm…问题中添加了新信息。仅当“操作”属性位于“提交”按钮上时,才会出现这种情况。将其移动到表单标记,它就可以正常工作。