form表单序列化

最近在写的功能,因为接口那边接收的全部都是json格式,所以总结一下最近的学习心得和体会。

1、基本的表单序列化(不包含数组,map,对象等)

serialize()方法

表单结果:id=1&name=zhangsan&age=18

serializeAyyay()方法

表单结果:

[{'name':'id','value':'1'},{'name':'name','value':'zhangsan'},{'name':'age','value':'18'}]

2、基本表单转json(不包含数组,map,对象等

其实就是利用1的方法,稍加整理而来,现将代码附上:

/**
 * 表单序列化成json
 * @param form
 */
function serializeToJson(form) {
    var o = {};
    var a = $("#" + form).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 JSON.stringify(o);
};
form就是你的表单的id,当然,你也可以使用其他的选择器。

3、表单包含数组,map结构

在2的基础上,你将得到一个json字符串,但是,你的数组也被当成了一个字符串,所以,我的解决办法就是将表单得到的json转成json对象,然后将你的数组重新赋值给你的属性,最后再将json序列化。特别需要注意的是,如果你是直接写json格式的数组或者map,请注意格式,若是拼装成的,也请注意格式。demo如下:

var jsonData = JSON.parse(serializeToJson("form1"));//将你的表单序列化成对象
jsonData.context= JSON.parse($("#context").val());//将你的数组也转成json对象并重新赋值给属性(注意json格式数组的写法)
jsonData = JSON.stringify(jsonData);//将json对象重新序列化
4、表单包含对象

同样在2的基础上,只不过将你的对象新放在一个表单中,然后将两个表单序列化,并结合3的方法,即转换为json对象重新赋值的方法,将两个json对象拼成一个json对象并序列化。

以上就是加班一天想出来的解决复杂结构的表单序列化的问题。如果有人有更加简便的方法,也请分享给我,若有写的不对的地方,也请及时指正,避免误导他人。谢谢




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值