表单序列化,获取Json对象

以下方法适用于所有表单元素

1、.serialize()

$(selector).serialize()方法通过序列化表单值创建 URL 编码文本字符串

<form>
  <input type="checkbox" name="username" value="南国"/>南国
  <input type="checkbox" name="username" value="mary"/>mary
  <input type="text" name="age" value="18"/>
</form>


var aa = $('form').serialize();
console.log(aa); // username=%E5%8D%97%E5%9B%BD&username=mary&age=18
// 用decodeURIComponent解码
console.log(decodeURIComponent(aa)); // username=南国&username=mary&age=18

2、.serializeArray()

$(selector).serializeArray()方法通过序列化表单值来创建对象(name 和 value)的数组

var aa = $('form').serializeArray();
console.log(aa); 

这里写图片描述

3、.serializeJson()

把以下这段代码引入你的js文件中
$(selector).serializeJson()方法,是通过serializeArray()函数得到的数组来进行数据组装的
表单的name值为键值,若有多个相同的name值以数组的形式进行拼装,如下列的username

$.fn.serializeJson = function() {
  var arr = this.serializeArray();
  var json = {};
  arr.forEach(function(item) {
    var name = item.name;
    var value = item.value;

    if (!json[name]) {
      json[name] = value;
    } else if ($.isArray(json[name])) {
      json[name].push(value);
    } else {
      json[name] = [json[name], value];
    }
  });
  return json;
}

这里写图片描述

$.param()将对象转换为字符串键值对格式

$.param()可以将对象的键值转为URL地址的字符串键值对,可以更稳定准确的传递表单内容,因为有时程序对应复杂的序列化解析能力有限

var obj = {
  aa: 1,
  bb: 'margy',
  cc: '南国'
}

console.log($.param(obj));  // aa=1&bb=margy&cc=%E5%8D%97%E5%9B%BD
原文地址:https://www.cnblogs.com/Zting00/p/7497634.html