jquery序列化,javascript 序列化

jquery form 序列化成json对象

通过$("#form").serialize()可以获取到序列化的表单值字符串。

在恩阳等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、网站建设 网站设计制作按需网站策划,公司网站建设,企业网站建设,高端网站设计,营销型网站建设,成都外贸网站制作,恩阳网站建设费用合理。

通过$("#form").serializeArray()输出以数组形式序列化表单值。

统统不满足想得到Json的愿望。堆栈溢出后,找到了一个这样的方法

然后通过JSON.stringify($("#form").serializeObject()); 就可以得到Json内容

Jquery表单序列化后添加数据

serialize()、serializeArray()方法都是jquery用户序列化表单的,用于ajax提交的data值的序列化

在chrome的控制台我们很清楚的看到了serializeArray()返回的是json数组,数组的每个对象都是有json字符串构成,我们可以看到,每个json字符串包括两个键值对,每个键值对都是有name,value组成,其实serializeArray()它把表单里的每个需要提交的dom的name的值赋给json字符串的name,dom的value的值赋给json字符串的value.

那么我们只需这要添加额外的内容:

var dataParam = $("#updateChannelForm").serializeArray();

例如我想添加sex="男"

dataParam.push({"name":"sex","value":"男"}) 就可以了

我们看到serialize()方法把表单里的内容序列化成了字符串

"id=58channelType=2subTitle=591teststetetsextAttrValueId=599"

那么我们只需这要添加额外的内容:

var dataParam = $("#updateChannelForm").serialize();

例如我想添加sex="男"

dataParam =dataParam +""+"sex=男"

JQuery的post提交方式为什么要序列化,而Get提交方式就不用?序列化做了什么?

这是因为后台能够直接处理的数据格式,是一种经过序列化的键值对数据,比如前端要向后台提交三个参数,分别是a=1,b=2,c=3,那么后台接收到的数据就应该是a=1b=2c=3(可以看到其实就是每个“键值对”之间用连接)。当我们用get方式提交数据时,参数是直接附加到url后面的,即

xxx.xxx这是域名此略.xxx?a=1b=2c=3

可以看到?后面的正是后台程序能够直接处理的数据格式,所以get方式提交数据的话,就不需要再对参数进行序列化处理了,直接提交即可。

而当我们用post方式提交时,通常我们提交的数据本身就是一个json对象,比如说像这样的:

var data = {a:1, b:2, c:3};

而提交时数据是直接以原始格式存储在body中而不是以键值对的方式附加到url中的,所以后台程序是无法直接识别的,这时候就需要在提交前先把data转换为 a=1b=2c=3 的格式再提交,这就是序列化。

当然,如果数据是通过表单提交的,那么不管是post方式还是get,浏览器会自动进行序列化,无需前端js再做任何处理。


标题名称:jquery序列化,javascript 序列化
标题链接:http://ybzwz.com/article/dsipgph.html