41

如果我在 HTML 中做这样的事情,我是否可以期待得到良好支持的常见行为:

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

似乎这种事情本质上是荒谬的,但我已经看到它在这里和那里使用,我想知道地球上的预期行为应该是什么。浏览器是否足够聪明,可以将“¶m2=whatever¶m3=whatever”添加到操作中,还是它们只是输入第二个问号?要不然是啥?在某些情况下,这实际上是正确的做事方式吗?

4

4 回答 4

67

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

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

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

于 2009-04-09T00:26:43.830 回答
24

不确定,但我认为将这些变量放在隐藏的输入字段中是更好的做法。这样,您的发布方法是 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>
于 2009-04-09T00:46:59.133 回答
4

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

于 2009-04-09T01:46:11.253 回答
3

好吧,除了最后一个问题,所有问题都已回答,答案是肯定的。对于POST,这是允许的,但您很可能会发现它不起作用的情况。我见过只允许 postdataquerystring 的 web 服务器,所以它不可靠。

于 2009-04-09T01:48:01.670 回答