1、GET请求与POST请求
<form.../>元素的method属性很重要,其决定了该表单提交请求的方式表单默认以GET方式提交请求。
1. GET方式的请求: 直接在浏览器地址栏中输入访问地址所发送的请求,或表单对应的from元素没有设置method属性,或method属性设置为get,这几种请求都是GET方式的请求。GET方式的请求会将请求的参数的名和值转换成字符串,并添加在原URL之后,因此可以在地址栏中看到请求参数的名和值。且GET请求传送的数据量较小,一般不大于2kb。
2. POST方式的请求: 这种方式通常使用提交表单的方式来发送,且需要设置form元素的method属性为post。POST方式传送的数据量较大,一般认为POST请求参数的大小不受限制,但往往取决于服务器的限制,POST请求传输的数据量总比GET传输的数据量大。而且POST方式发送的请求参数以及对应的值放在HTML HEADER中传输,用户不能在地址栏里看到请求参数值,安全性相对较高。
2、enctype属性
enctype属性用于指定表单数据的编码方式
1. application/x-www-form-urlencoded: 这是默认的编码方式,其只处理表单控件里的value属性值,采用这种编码方式的表单会将表单控件的值处理成URL编码方式。
2. multipart/form-data: 这种编码方式会以二进制的方式处理表单数据,这种编码方式也会把文件域指定文件的内容也封装到请求参数里。当需要通过表单上传文件时使用该属性值。
3. text/plain: 当表单的action属性值为mailto:URL的形式时使用这种编码方式比较方便,这种编码方式主要适用于直接通过表单发送邮件的方式。
3、表单控件转换成请求参数的规则
当<form.../>元素中定义一个或多个表单控件时,一旦提交该表单,表单里的表单控件会转换成请求参数。
1. 每个有name属性的表单控件对应一个请求参数,没有name属性的表单控件不会生成请求参数。
2. 如果多个表单控件有相同的name属性,则多个表单控件只生成一个请求参数,只是该参数有多个值。
3. 表单控件的name属性指定请求参数名,value属性指定请求参数值。
4. 如果某个表单控件设置了disabled或disabled =”disabled”属性,则改表单不再生成请求参数。
Note: 在HTML页面中,提交请求通常有两种方式,即提交表单和使用超链接,提交表单可以让用户输入请求参数,并以POST方式提交请求;如果以超链接方式提交表单,则只能提交GET请求。
参考资料:疯狂HTML5/CSS3/JavaScript讲义