首页新闻找找看学习计划

form表单序列化为json串

0
悬赏园豆:50 [已解决问题] 解决于 2013-05-23 14:03

能否逐句解释以下jquery代码,谢谢了。

only-time的主页 only-time | 初学一级 | 园豆:4
提问于:2013-05-23 09:28
< >
分享
最佳答案
0

var o  申明一个对象。

var a  取得选择对象的数组对象

$.each(a,function() 遍历这个数组对象

if(o[this.name])  如果这个对象的名称不存在

 if(!o[this.name].push)如果这个对象没被放进去, 后面的 如果对象被放进去了。o[this.name].push()取得当前的名称对应的值放到对象里。

else  后面的为如果对象名称存在,覆盖之前的值。

然后返回对象。

有什么疑问再提。

收获园豆:50
````` | 专家六级 |园豆:14268 | 2013-05-23 10:04

首先感谢朋友的回答,另外还有四个疑问,希望能够给予解惑,麻烦朋友了。

1:if(o[this.name]) //应该是 如果这个对象的名称存在吧?

2:o[this.name]=[o[this.name]]; //右边的[o[this.name]] 是什么意思呢?

3:o[this.name].push(this.value||'') // 例如:[{"name":"id","value":"123"}],通过这句代码产生新的字符串格式:{"id":"123"},如果value值为空,则为{id:' '},是这样么?

4:0[this.name] //里面的this所指的就是[{"name":"id","value":"123"}]这样的数组吧,0[this.name]=id,o[this.value]=123,这样理解对么? 

only-time | 园豆:4 (初学一级) | 2013-05-23 12:26

@only-time:  嗯[o[this.name]]分解开来就是[]和o[this.name] 取得这个值,对象为数组。

其他的理解上都是正确的。

````` | 园豆:14268 (专家六级) | 2013-05-23 12:49
其他回答(2)
0

0.继承 serializeObject 对象

 

1,。var o ={}.声明一个空的对象

2.this对象序列化为数组

3.each迭代这个数据

4,.判断数组中是否存在当前迭代的name

5.如果不存在将name push到那个o(也就是空对象)。

6.将value加'',

最后返回序列化的对象!

Beyond-bit | 园豆:2663 (老鸟四级) | 2013-05-23 09:57

感谢朋友的回答。

支持(0) 反对(0) only-time | 园豆:4 (初学一级) | 2013-05-23 14:04
0

serializeArray()是JQuery自带的一个方法把表单数据转化成JSon对象,其结果字符串后如:[{"name":"id","value":"123"},{"name":"username","value":"123"},{"name":"age","value":"1242314"}]。而图片中的serializeObject方法进一步简化而已,其结果字符串后如:{"id":"123","username":"123","age":"1242314"},具体的代码解释楼上讲解的很清楚了。

yyutudou | 园豆:997 (小虾三级) | 2013-05-23 10:13

感谢朋友的回答,尤其是字符串格式,不过不能同时选择多个最佳答案,抱歉。

支持(0) 反对(0) only-time | 园豆:4 (初学一级) | 2013-05-23 14:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册