关于请求方法为GET的form表单,action属性后不能带参数的问题

  若在页面中有如下代码:

1
2
3
4
5
<form action="XXX?name=Jack&age=10">
<input type="text" name="address" value="Beijing"/>
<input type="hidden" name="sex" value="male"/>
<input type="submit" value="submit"/>
</form>

  那么后台无法获取action属性中的name和age参数。这是因为浏览器会将表单中的数据封装为字符串,例如会将上面的address和sex属性封装为address=Beijing&sex=male,然后将其直接附加在action的URL之后,URL和封装后的字符串之间会有一个‘?’分隔。如果在表单的action属性中已经包含了参数,浏览器会直接将其过滤掉,再附加form表单数据。所以请求方法为GET的表单,其action属性中不能携带参数,如果要实现参数的传递,有如下三种方式:
  1、使用POST方式进行传递,可以在action中添加参数;
  2、如果要用GET方式,那么可以采用上述的方式,通过表单数据进行传递,例如:

1
2
<input type="hidden" name="name" value="Jack"/>
<input type="text" name="age" value="10"/>

  3、使用超链接(超链接默认的请求方式为GET):

1
<a href="XXX?name=Jack&age=10">提交</a>