表单序列化为一个对象
2018-04-21 本文已影响0人
Rosa_Lv
有这样一个表单:
<form class="form-horizontal" >
<label for="agentId" >编号</label>
<input type="text" name="agentId" id="agentId" placeholder="请输入编号">
<label for="phone" >手机号</label>
<input type="text" class="form-control" name="phone" id="phone" placeholder="请输入手机号">
<label for="nick" >昵称</label>
<input type="text" name="nick" id="nick" placeholder="请输入昵称">
</form>
1、通常的方法是:
$('form').serialize() //agentId=123456&phone=17823457654&nick=rosa
这种方法对于get请求发送参数来说还是很好用的,但如果是post请求这样做就不行了,发送post请求时怎样直接序列化成一个对象呢?只需将下面这个方法放进你的js代码里就可以啦:
$.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;
};
调用这个方法:
$('form').serializeObject() //{agentId:"123456",phone:"17823457654",nick:"rosa"}
得到的是一个对象。