下面是将表单数据转换成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;
};
var o={a:"2"}
o["a"]等价于o.a
也就是o[this.name] 就是取值,key是this.name的值
o[this.name],其中o就是你转换后的对象,那么可以通过对应的字段名访问,this.name就是一个值,这个值在 o 中存在同名的字段,然后取出对应的值
o是对象,取属性可以使用点操作符号也可以使用[]操作符号,点操作符号需要明确属性,不能是变量,如o.a等价于o['a'],[]可以使用变量获取
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]