如果我在HTML中执行类似的操作,是否会有一个受到良好支持的常见行为:
<form method="get" action="/somePage.html?param1=foo¶m2=foo">
<input name="param2"></input>
<input name="param3"></input>
</form>
似乎这种事情本质上是荒谬的,但我已经看到它在这里和那里使用,我想知道地球上预期的行为应该是什么。浏览器是否足够聪明,可以在“&amp; param2 = what&amp; param3 = what”中采取行动,还是仅仅提出第二个问号?或者是什么?是否有这种情况实际上是正确的做事方式?
答案 0 :(得分:55)
如果method属性设置为GET,浏览器会在构造表单参数值之前从action属性中删除查询字符串参数。
因此,在您的示例中,提交时对服务器的请求将如下所示:/somePage.html?param2=value¶m3=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 或查询字符串的网络服务器,所以它不可靠。