您的位置 首页 php

点击form表单 提交按钮后,表单中的值,到底转换成了什么?

开发问题描述:

今天在写一个提交表单的程序的时候,由于提交数据比较多,而且需要采用 ajax 无跳转方式提交,所以就采用了一种比较快捷的方式, 序列化 表单,数据提交成功,但是心里有点疑惑,序列化后的表单为什么可以直接提交给php后台,而且后台也能很方便的接收.?

序列化后的表单的数据结构

以上就是该表单通过jQuery序列化后的结果,虽然这样能够很方便的提交大量表单数据,但是就是想不通,为什么这样一个字符序列能够直接提交给后台

为了搞清楚这个问题,于是在网上查阅了很多资料,并通过几次尝试,基本上搞清了,其中的原理, 要理解这个原理,首先要知道表单提交的过程. 下面着重分析下表单提交的过程(不含文件上传部分)

表单提交过程如下

(1)确定有效控件

在这个过程中,浏览器,需要判断待提交表单中,哪些控件是有效控件,哪些控件是无效控件,所谓有效控件就是指,后台能够被后台获取值的控件,具体的分析,已经在上一篇文章中详细描述过,这里就不在赘述了.

(2)获取控件数据

第(1)完成之后,浏览器就需要收集有效控件的值,并将其组织成 name=value的形式 多个值之间用 &号分开,其结构类似于

name1=value1&name2=value2&name3=value3的形式.

(3)对数据进行 编码

表单对数据的编码方式有很多种,常用主要有两种

<1> application/x-www-form-urlencoded

这是表单默认的提交方式,也就是在设置表单编码方式的情况下,表单提交时会默认采用这种网址编码形式,对表单数据进行提交

具体案例分析如下:

这里是采用原生的form进行提交,而非ajax提交方式,从中分析,可以看到,当点击提交按钮后,表单确实是被转换成了一段name=value类型的键值对,而且中间用&符号隔开,通过对比可以发现,这个结果和jQuery序列化表单的结果是相同的,

这样就很明白了,所谓的序列化表单就是使用了js收集表单数据后,通过拼接组装,已达到模拟原生表单提交数据的效果,

需要注意的是,这种编码方式,只能用于普通的键值对表单提交,而不能用于文件上传,

<2>multipart/form-data编码方式

这种编码方式,主要是用来实现文件上传而设置的,它会文件以二进制的形式,放置于请求体中,分段发送给服务器,需要注意的是使用该编码方式时,表单的提交方式必须设置为 method=post,由于时间关系,这里就暂时不放案例了,后续文章会继续介绍.

(4)发送数据

最后一步就是将组装好的数据,根据表单的action所指示的服务器地址,进行发送,服务器接收到数据后,根据相关参数,返回客户端所需数据

以上就是个人所理解的表单提交过程,仅供参考,如有不全或不当之处,欢迎评论,指出,交流学习!!

文章来源:智云一二三科技

文章标题:点击form表单 提交按钮后,表单中的值,到底转换成了什么?

文章地址:https://www.zhihuclub.com/80268.shtml

关于作者: 智云科技

热门文章

网站地图