2 u011844490 u011844490 于 2016.02.24 13:31 提问

form 转json的问题··········

下面是将表单数据转换成json对象
其中的 o[this.name] 老不理解是什么意思?求大神指教!
var 0={};表示声明一个json对象
o[this.name]是什么意思啊?这是什么写法啊?

     // 将表单数据转换成json对象
    $.fn.serializeObject = function() {    
       var o = {};    
       var a = this.serializeArray();
       $.each(a, function() {
           if (o[this.name]) {
               if (!o[this.name].push) {
                   o[this.name] = [o[this.name]];
               }
               o[this.name].push(this.value || '');
           } else {
               o[this.name] = this.value || '';
           }    
       });
       return o; 
    };

5个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.02.24 13:34
 var o={a:"2"}

o["a"]等价于o.a
也就是o[this.name] 就是取值,key是this.name的值
bdmh
bdmh   Ds   Rxr 2016.02.24 13:36

o[this.name],其中o就是你转换后的对象,那么可以通过对应的字段名访问,this.name就是一个值,这个值在 o 中存在同名的字段,然后取出对应的值

showbo
showbo   Ds   Rxr 2016.02.24 13:42

o是对象,取属性可以使用点操作符号也可以使用[]操作符号,点操作符号需要明确属性,不能是变量,如o.a等价于o['a'],[]可以使用变量获取

u013196231
u013196231   2016.02.24 14:34

serializeArray()函数用于序列化一组表单元素,将表单内容编码为一个JavaScript数组。

serializeArray()函数常用于将表单内容序列化为JSON对象,以便于被编码为JSON格式的字符串。

该函数会将可用于提交的每个表单控件封装成一个Object对象,该对象有name和value属性,对应该表单控件的name和value属性。然后将这些Object对象封装为一个数组并返回。图片说明

看一下控制台输出的 : 就是name,value键值对,此处的this.name 就是 a的name,o[this.name] 可以拆成var oname = this.name;o[oname]

cai13826443073
cai13826443073   2016.04.23 17:57
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!