HTML使用表单向服务器提交请求,表单、表单控件的主要作用就是收集用户输入,当用户提交表单时,用户输入内容将被作为请求参数提交到远程服务端
form元素
属性 | 作用 |
---|---|
action | 指定当单击表单内的“确认”按钮时,该表单被提交到哪个地址。该属性必填 |
method | 指定提交表单时发送何种类型的请求,该属性值可为get或post,该属性必填 |
enctype | 指定对表单内容进行编码所使用的字符集 |
name | 指定表单的唯一名称,建议该属性值与id属性值保持一致 |
target | 指定使用哪种方式打开目标URL(提交请求会打开另一个URL资源),该属性值可以是_blank,_parent,_self,_top四个值中之一。 |
get和post的区别
- get和post是HTTP协议中的两种发送请求的方法,它们本质上都是TCP连接,但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。get方式产生一个TCP数据包;post方式产生两个TCP数据包。对于get方式的请求,浏览器会把http header和data一并发送出去,服务器相应并返回数据;而对于post,浏览器先发送header,服务器响应,浏览器再发送data,服务器响应并返回数据。
- get方式请求:get方式请求会将请求参数的名和值转换成字符串,并附加在原URL之后,因此可以在地址栏中看到请求参数名和值。且get请求传送的数据量较小,一般不能大于2KB。
- post请求方式:post方式传送的数据量较大,通常认为post请求参数的大小不受限制,但往往取决于服务器的限制,post请求传输的数据量比get传输的数据量大。而且post方式发送的请求参数以及对应的值放在Request body中传输,用户不能再地址栏里看到请求参数值,安全性相对较高。
- get在浏览器退回时是无害的,而post会再次提交请求。
- get请求只能进行URL编码,而post支持多种编码方式。
- get请求参数会被完整的保留在浏览器历史记录里,而post中的参数不会被保留。
- 对于参数的数据类型,get只接受ASCII字符,而post没有限制。
- get参数通过URL传递,post放在Request body中。
表单的enctype属性用于指定表单数据的编码方式,该属性有如下三个值。
- application/x-www-form-urlencoded:这是默认的编码方式,它只处理表单控件里的value属性值,采用这种编码方式的表单会将表单控件的值处理成URL编码方式。
- multipart/form-data:这种编码方式会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里。当需要通过表单上传文件时使用该属性值。
- text/plain:当表单的action属性值为mailto:URL的形式时使用这种编码方式比较方便,这种编码方式主要适用于直接通过表单发送邮件的方式。
提交表单时,表单里的表单控件将会转换成请求参数。表单控件转换成请求参数的规则如下:
- 每个有name属性的表单控件对应一个请求参数,没有name属性的表单控件不会生成请求参数。
- 如果多个表单控件有相同的name属性,则多个表单控件只生成一个请求参数,只是该参数有多个值。
- 表单控件的name属性指定请求参数名,value属性指定请求参数值。
- 如果某个表单控件设置了disabled,则该表单不会再生成请求参数。
大部分表单控件都可以获得鼠标焦点,响应鼠标事件,因此它们都可以指定onfocus,onblur属性,分别用于设置得到焦点、失去焦点事件响应。而且这些表单控件都可以指定tabIndex属性,通过设置tabIndex属性,让用户无需使用鼠标,就可以让输入焦点在各表单控件上转移。
input元素
input中type属性值
-
text
单行文本框 -
password
密码输入框,输入值自动变为原点 -
checkbox
复选框,靠name属性分组,提交到后端的时候被选中的value是值 -
radio
单选框,靠name分组,value值被提交到后端
5.file
文件上传 ,accept
设定上传文件类型 -
hidden
隐藏域,用于暂存一些信息;用于验证时候安全(数据发送人是否是合法的用户),避免随意伪造数据。
7.image
图像域,此时可为input元素指定width和height两个属性,图像域和提交按钮的作用基本一样,单机它们都会导致表单被提交,区别是图像域是一个图像按钮。 -
button
无动作按钮,在默认情况下,单机该按钮对表单不会有任何作用。通常我们可以为该按钮编写JavaScript脚本来响应它的单机双击等事件。 -
submit
提交表单 -
reset
重置表单
label元素
label元素用于在表单元素中定义标签,这些标签可以对其他可生成请求参数的表单控件元素(如单行文本框、密码框等)进行说明
<label for="username">单行文本框:</label>
<input id="username" name="username" type="text"> //让标签和表单控件关联
button元素
用于定义一个按钮,在button元素内部可以包含普通文本,文本格式化标签,图像等内容,这也是button按钮和input按钮的不同之处。
列表
<form action="">
<label for="">课程</label>
<select name="lessons" id="lessons">
<option value="English">英语</option>
<option value="Chinese">语文</option>
<option value="Math">数学</option>
</select><br>
<label for="">时间</label><br>
<select name="days" id="days">
<option value="Monday">星期一</option>
<option value="Tuesday">星期二</option>
<option value="Wednesday">星期三</option>
<option value="Thursday">星期四</option>
<option value="Friday">星期五</option>
</select><br>
</form>
textarea元素
用于生成多行文本域
<textarea cols="20" rows="2"></textarea>