深入理解Form表单

前言:随着框架的普遍,原生的Form表单用得很少了(我用得不多)。框架也是从原生来的,先把基础的理解透彻了,以后出现了bug也好解决。

一、Form表单的作用

Form表单是用户与服务器(或应用程序)交互的桥梁。用户通过Form表单将数据发送到服务器上,但是web网页也可以拦截Form表单的数据。

二、一个基本的Form表单

  

这是一个简单的form表单,action 表示表单提交的url,method 表示表单提交的HTTP方式,有 getpostdialog 三种选项。在这个例子中,点击 button 按钮时,表单会发送三个已命名(name)的数据块 user_nameuser_emailuser_msg。这些数据会用 HTTPPOST 方法,把信息发送到URL为 /handleForm 目录下。

在服务端,位于URL /handleForm 上的脚本将接受HTTP请求中包含的3个键值对。

  • actionurl:
    • url 为相对路径时:表单数据会提交到自己站点上
    • url 为绝对路径时: 表单数据会提交到自己站点之外。当前后端部署路径不同时, 使用绝对路径。
    • url 为空时: 表单数据提交到当前页面的URL上。(HTML5开始,不需要使用#
  • method 的两个常用选项:
    • GET:请求服务器资源。浏览器发送一个空的主体,发送的数据被追加到URL上了。可以直接在浏览器的URL中看到用户输入的数据。所以GET 不适合发送大量数据或包含安全信息的数据。
    • POST:使用 POST 方法提交表单时,数据不会被附加到URL上,HTTP请求头中会有 Content-Type: application/x-www-form-urlencoded , 发送的数据会放在请求体中。

三、使用Form表单发送文件

由于HTTP是一种文本型协议,所以处理二进制数据有特殊的要求。需要设置Form表单的 enctype 属性。

enctype属性: 这个属性指定了提交表单时请求头中的 Content-TypeContent-Type 大家都耳熟能详了,它是告诉服务器,咱们浏览器发送过去的数据是什么类型。使用 POST 方法时,Content-Type 默认的值是 x-www-urlencoded。 意思是:“这是已经编码为URL参数的表单数据”

想要发送文件, 需要以下步骤

  • 将表单的 method 设置为 POST。因为文件内容不能放入URL参数中
  • enctype 的值设置为 multipart/form-data。因为数据将会被分成多个部分,每个文件单独占一个部分,表单正文中包含的文本数据(如果有的话)占用一个部分。
  • 包含一个或多个 ,这样用户才能上传文件

代码:

tip:如果想上传多个文件, 在 input 中添加 multiple 属性。

四、表单小部件

表单小部件,指的是组成表单的基本HTML元素,如

你可能感兴趣的:(深入理解Form表单)