如果<form>中的action字段有参数?</form>会发生什么

时间:2009-04-09 00:17:24

标签: html forms query-string

如果我在HTML中执行类似的操作,是否会有一个受到良好支持的常见行为:

<form method="get" action="/somePage.html?param1=foo&param2=foo">
  <input name="param2"></input>
  <input name="param3"></input>
</form>

似乎这种事情本质上是荒谬的,但我已经看到它在这里和那里使用,我想知道地球上预期的行为应该是什么。浏览器是否足够聪明,可以在“&amp; param2 = what&amp; param3 = what”中采取行动,还是仅仅提出第二个问号?或者是什么?是否有这种情况实际上是正确的做事方式?

4 个答案:

答案 0 :(得分:55)

如果method属性设置为GET,浏览器会在构造表单参数值之前从action属性中删除查询字符串参数。

因此,在您的示例中,提交时对服务器的请求将如下所示:/somePage.html?param2=value&param3=value

所以不,当方法是“GET”时,如你的例子所示,没有理由这样做。

答案 1 :(得分:19)

不确定,但我认为最好将这些变量放在隐藏的输入字段中。这样,无论您的发布方法是POST还是GET,都无关紧要。

<form method="get" action="/somePage.html">
  <input name="param2"></input>
  <input name="param3"></input>
  <input type="hidden" name="param1" value="foo" />
  <input type="hidden" name="param2" value="foo" />
</form>

答案 2 :(得分:4)

您可以在发布表单之前使用脚本将表单中的方法属性更改为“POST”,因此可以在操作中使用查询字符串。不过,它似乎不是最好的解决方案。

答案 3 :(得分:3)

好吧,除了最后一个问题,所有问题都得到了解答,答案是肯定的。对于POST,它是允许的,但您可能会发现它不起作用的情况。我见过只允许postdata 查询字符串的网络服务器,所以它不可靠。