关于
标签的使用

此文献将对表单常见的几点问题进行作答.

  1. form表单有什么用?有哪些常用的input标签,分别有什么作用?
  1. 标签根据 MDN的定义HTML
    元素表示了文档中的一个区域,这个区域包含有交互控制元件,用来向web服务器提交信息.
    根据
    w3school
    的定义 标签用于为用户输入创建 HTML 表单,表单能够包含元素,比如文本字段、复选框、单选框、提交按钮等等,表单用于向服务器传输数据。
  2. 常用的input标签,换句话说就是有哪些常用的input标签类型(即type="?"),input标签毕竟只有一个....
    说到类型,举例来说就有text、submit、radio、checkbox、reset、button等..
  1. post和get方式的区别?

基本原理:

  1. Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.
    1.1 根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。
    (1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说,GET 请求一般不应产生副作用。就是说,它仅仅是获取资源信息,就像数据库查询一样,不会修改,增加数据,不会影响资源的状态。
    注意:这里安全的含义仅仅是指是非修改信息。
    (2).幂等的意味着对同一URL的多个请求应该返回同样的结果。
    1.2 根据HTTP规范,POST表示可能修改变服务器上的资源的请求。引用一个例子:以新闻网站为例,读者对新闻发表自己的评论应该通过POST实现,因为在评论提交后站点的资源已经不同了,或者说资源被修改了。
  2. 表面现象上的区别:
    (1) 在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTML HEADER内提交。
    (2) 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
    (3) GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
    (4) 安全性问题。正如在(1)中提到,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get;如果用户输入的数据不是中文字符而且包含敏感数据,那么还是使用 post为好。
    GET在浏览器回退时是无害的,而POST会再次提交请求。

    GET产生的URL地址可以被Bookmark,而POST不可以。

    GET请求会被浏览器主动cache,而POST不会,除非手动设置。

    GET请求只能进行url编码,而POST支持多种编码方式。

    GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

    GET请求在URL中传送的参数是有长度限制的,而POST么有。

    对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

    GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

    GET参数通过URL传递,POST放在Request body中

来自w3schools的答案.

当然除此之外以外还有一些非常有意思的说法,比如[^1]:

在我大万维网世界中,还有另一个重要的角色:运输公司。不同的浏览器(发起http请求)和服务器(接受http请求)就是不同的运输公司。 虽然理论上,你可以在车顶上无限的堆货物(url中无限加参数)。但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦。

GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包。
再仔细点说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?
1). GET与POST都有自己的语义,不能随便混用。
2). 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
3). 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
[^1]: 来自掘金社区的一篇文章

  1. 在input里,name 有什么作用?

首先name就像是一个人的名字,是可以重复的,而id则不行.
用途1:
作为可与服务器交互数据的HTML元素的服务器端的标示,比如input、select、textarea、和button等。我们可以在服务器端根据其Name通过Request.Params取得元素提交的值.
用途2:
HTML元素Input type='radio'分组
用途3:
建立页面中的锚点
还有一些常见的用途欢迎补充........

  1. radio 如何 分组?
    正如所述.

  2. placeholder 属性有什么作用?

简单的来说,placeholder就是一个隐藏提示,是半透明的主要应用于input标签,是html5的新特性,当我们鼠标点击输入框并赋予焦点时它会消失,当离开失去焦点时则会再次出现.

  1. type=hidden隐藏域有什么作用? 举例说明
  1. 隐藏域在页面中对于用户是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用。浏览者单击发送按钮发送表单的时候,隐藏域的信息也被一起发送到服务器。
  2. 有些时候我们要给用户一信息,让他在提交表单时提交上来以确定用户身份,如sessionkey,等等.当然这些东西也能用cookie实现,但使用隐藏域就简单的多了.而且不会有浏览器不支持,用户禁用cookie的烦恼。
  3. 有些时候一个form里有多个提交按钮,怎样使程序能够分清楚到底用户是按那一个按钮提交上来的呢?我们就可以写一个隐藏域,然后在每一个按钮处加上onclick="document.form.command.value="xx""然后我们接到数据后先检查command的值就会知道用户是按的那个按钮提交上来的。
  4. 有时候一个网页中有多个form,我们知道多个form是不能同时提交的,但有时这些form确实相互作用,我们就可以在form中添加隐藏域来使它们联系起来。
    欢迎继续补充.........

你可能感兴趣的:(关于标签的使用)