form表单数据序列化为json

本文介绍了一种将表单数据轻松序列化为JSON的方法,旨在简化通过AJAX提交表单时的数据获取过程。通过这种方法,开发者可以避免手动获取每个表单字段的值。示例中展示了如何使用监听事件与layui框架配合,实现无跳转的表单数据AJAX提交。

世上没有最聪明的人,只有最懒的人,分享一个表单数据序列化为json数据,通过ajax提交数据就不用一个一个的去获取值了,用下面的方法一键取值,懒人必备利器

$.fn.serializeObject = function () {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function () {
        if (o[this.name] !== undefined) {
            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 formdata = $("#formData").serializeObject();

控制台打印输出结果值:

console.log(JSON.stringify(formdata));

formdata得到的就是最终转为json数据的结果值,也就是最后ajax提交的数据,formDate就是form表单的id值,使用该方法提交数据需要给提交按钮加上监听事件,为了使用ajax提交表单数据,监听事件最后加上一个返回值,避免表单提交跳转

return false

分享一下我的例值,使用了layui框架:

//监听提交按钮-页面对应按钮<button lay-submit="" lay-filter="demo" class="layui-btn">提交</button>
    form.on("submit(demo)",function (data) {
        layer.msg('确定提交?',{
            time: 20000, //20s后自动关闭
            btn: ['确定', '取消'],
            icon:0,
            yes:function (index) {
                //获取form表单数据
                var formdata = $("#formData").serializeObject();
                var stringJson = JSON.stringify(formdata);
                console.log(stringJson)
                $.post('地址',formdata,function (data) {
                    if (data.result==1){
                        layer.msg("提交成功",{
                            icon:1,
                            time:1000,
                        });
                        setTimeout(function () {
                            //获得当前窗口索引
                            var index=parent.layer.getFrameIndex(window.name);
                            //调用父类关闭窗口方法
                            parent.layer.close(index);
                        },1000)

                    } else {
                        layer.msg("提交失败",{
                            icon:0,
                            time:1000,
                        });
                    }
                });
                form.render();
                layer.close(index)
            }
        });
        return false;//防止表单数据提交页面跳转
    });

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值