9、HTML表单

HTML表单

表单是html里面,前端和服务器进行交互的一种非常重要的方式,它是和服务器交互的一种机制。

什么是表单?

收集 不同类型的 用户输入,发送 或者 提交给 服务器。

举个简单的例子:

你在马路上碰到一个大妈,大妈要你帮她做个问卷调查,你拿到问卷调查那一刻,就是你看到表单的那一刻;然后你拿起笔开始填这个问卷调查,就是你在做用户输入,输入这个表单;然后你填完了,你把这个问卷调查给了大妈,就相当于你把这个表单发送给了服务器;之后至于这个大妈拿你这个表单去干嘛了,比方说给你发垃圾短信,跟你就没什么太大关系了,就相当于说表单提交给了服务器之后,服务器还会再去做一系列的操作。这就是浏览器(或者说用户)和服务器进行交互的一种机制。

根据这个逻辑,表单就分为了两大部分:

输入:内容

  • 文本(普通文本、密码)

  • 单选框

  • 多选框

  • 下拉框

提交:提交按钮

提交就是把东西发送给服务器,这就涉及到发送的过程,发送的过程中浏览器要与服务器进行通讯,接下来就讲讲浏览器怎么样去和服务器进行做通讯。

首先我们来了解一下常用的协议:

  • http协议:超文本传输协议,它主要是保证客户机(浏览器)和服务器之间的通信。

    • http协议的最基本模式:请求-应答 模式

      过程:浏览器 主动发起请求 —》服务器 接受请求 —》服务器 自身做处理 —》结果 返回浏览器 —》浏览器 根据结果展示内容

      ​ (服务器开好了就一直在那里,你不去请求它,服务器是不会为你做什么事情的)

    • 浏览器常用的请求方式:GET请求,POST请求(这两个请求的相关内容在后文会涉及到,这里先不展开说)

< form > 标签——表单根标签

上图就是表单的最基本结构,这就相当于,大妈找你填问卷调查的时候,问卷调查的那张纸。

< input > 标签及type属性

  • < input > 标签——用来声明允许用户输入数据的 input 控件,用于搜集用户信息,它规定了用户可以在其中输入数据的输入字段。

    < input > 标签在 < form > 标签中使用。

  • type属性——规定< input > 标签中输入字段的形式。

    根据不同的 type 属性值,输入字段拥有很多种形式。

    属性值:text(文本),password(密码),radio(单选框),checkbook(复选框),submit(提交按钮),…

文本类型 < input > 标签 & 密码类型 < input > 标签

效果:

文本类型&密码类型 < input > 标签的name属性

name属性——规定 < input > 元素的名称,用于在 JavaScript 中引用元素,或者在表单提交后引用表单数据。

注意:只有设置了 name 属性的表单元素才能在提交表单时传递它们的值。

效果:

提交前

提交后

可以看到提交的值

没有定义name属性,提交后

只能看到多了一个问号,并不能看到值

注意:输入密码时,虽然输入框中的字符以实心圆点的形式呈现,看似是保密的,但是实际上只是你从输入框中看不到具体字符,它在浏览器上依旧是明文,浏览器会以明文的形式提交。要保证浏览器传输给服务器的时候密码是密文,就涉及到加密,涉及到用JavaScript做一些更多的操作,这就等到学JavaScript的时候再详细讲解。

单选框类型 < input > 标签 及 单选框类型 < input > 标签的name属性

name属性——①规定 < input > 元素的名称,

​ ②用于在 JavaScript 中引用元素,

​ ③或者在表单提交后引用表单数据,

​ ④在提交表单时传递它们的值。

​ ⑤用于给单选框分组,同组内选项框互斥(即只能选择一个,一旦选中其中一个,其他几个自动变为未选中状态)

注:单选框(radio)必须成组(2个以上)使用才有意义,而“组”是通过name属性来建立的,凡是name相同的就是同组。同组的单选框,只有一个会处在选中状态,其他的会自动呈现为未选中状态。

name属性相同(即分组相同)

name属性不相同(即分组不同)

复选框类型 < input > 标签 及 复选框类型 < input > 标签的name属性

name属性——①规定 < input > 元素的名称,

​ ②用于在 JavaScript 中引用元素,

​ ③或者在表单提交后引用表单数据,

​ ④在提交表单时传递它们的值。

​ ⑤复选框可以不用分组,所以name可以相同也可以不同。

效果:

< select > 标签 & < option > 标签

< select > 标签——下拉框

< option > 标签——下拉框中的选项

效果:

没有正常传值

原因:在跟选择有关的控件里面(例如单选框、复选框、下拉框),所有这些控件都有一个默认值,我们这里没有设定默认值,只是在控件外面填了一些文字,看起来像是控件的值,但实际上这只是给用户看的,浏览器并不会传递这些文字给服务器,要使浏览器能够正常传递选择类控件的值,需要用到选择类控件的value属性。

value属性——规定 < input > 元素的值。

value 属性对于不同 input 类型,用法也不同:

  • 对于 "button"、"reset"、"submit" 类型 - 定义按钮上的文本
  • 对于 "text"、"password"、"hidden" 类型 - 定义输入字段的初始(默认)值
  • 对于 "checkbox"、"radio"、"image" 类型 - 定义与 input 元素相关的值,当提交表单时该值会发送到表单的 action URL。

注意:value 属性对于 < input type="checkbox" > 和 < input type="radio" > 是必需的。

注意:value 属性不适用于 < input type="file" >。

效果:

表单的提交方式

< form > 标签的action属性——规定当提交表单时,向何处发送表单数据。

不填属性值,默认发送到当前页面

效果:

填入属性值,发送到属性值对应的页面

效果:

< form > 标签的method属性——规定用于发送表单数据的 HTTP 方法。

method 方法规定如何发送表单数据(form-data)(表单数据会被发送到在 action 属性中规定的页面中)。

表单数据可被作为 URL 变量的形式来发送(method="get")或者作为 HTTP post 事务的形式来发送(method="post")。

关于 GET 的注释:

  • 将表单数据以名称/值对的形式附加到 URL 中
  • URL 的长度是有限的(大约 3000 字符)
  • 绝不要使用 GET 来发送敏感数据!(在 URL 中是可见的)
  • 对于用户希望加入书签的表单提交很有用
  • GET 更适用于非安全数据,比如在 Google 中查询字符串

关于 POST 的注释:

  • 将表单数据附加到 HTTP 请求的 body 内(数据不显示在 URL 中)
  • 没有长度限制
  • 通过 POST 提交的表单不能加入书签

GET方法:

效果:

POST方法:

效果:

posted @ 2021-03-03 13:44  丨Mr丨C  阅读(298)  评论(0)    收藏  举报