zoukankan      html  css  js  c++  java
  • Jquery序列化form表单对象

    在web开发过程中,难免需要提交表单,js提交表单数据需要将所有input控件的值全部获得,然后组合成一个JSONObject对象传入后台,难免有些麻烦和琐碎,有好几种方法可以获得全部的表单数据,今天介绍其中一种序列化serialize()方式;

    • serialize()
    $("#myForm").seroalize()
    # myFrom 为form标签的id;
    

    把id为myForm的form标签内所有的控件全部序列化成json字符串;如:

    key1=value1&key2=value2
    key:是控件的name属性值
    
    • serializeArr()
    $("#myForm").seroalizeArr()
    # myFrom 为form标签的id;
    

    把id为myForm的form标签内所有的控件全部序列化成json字符串并添加到一个数组;如:

    [
        {key1:value1},
        {key2:value2}
    ]
    key:是控件的name属性值
    
    • serializeObject()
    $("#myForm").seroalizeArr()
    # myFrom 为form标签的id;
    

    把id为myForm的form标签内所有的控件全部序列化成JSONObject;如:

    {
        key1:value1,
        key2:value2
    }
    key:是控件的name属性值
    

    但是jquery没有内置serializeObject()方法,需要对重写该方法

    $.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;
    };
    

    但是在ajax请求时,使用该方法获得的对象直接传入后台会有400错误,这时候需要添加headers、和contentType;同时需要对获得对象转化成字符串类型;

    var formData = $("#myForm").serializeObject();
    console.log(formData);
    $.ajax({
        url: product.url.insert(),
        type: "POST",
        headers: {
            Accept: "text/html, application/xhtml+xml, */*"
        },
        contentType: 'application/json;charset=utf-8',
        data: JSON.stringify(formData),
        async: false,
        dataType: 'JSON',
        success: function (res) {
        }
        error:function(){
        }
    

    如果 控件name 值和javaBean字段值相同,那么后台可以直接接受该对象参数,不需要每个字段写一个参数,使用@RequesBody注解修饰;

    public String test(@RequesBody User user)
    
  • 相关阅读:
    face-morpher过程函数分析
    python,在路径中引用变量的方法
    【django学习】request.POST与request.POST.get两者主要区别
    微信小程序wx.uploadFile的两个坑
    python PIL/cv2/base64相互转换
    OpenCV-Python cv2.imdecode()和cv2.imencode() 图片解码和编码
    cv2.imread()
    详解Ubuntu Server下启动/停止/重启MySQL数据库的三种方式(ubuntu 16.04)
    python使用post请求发送图片并接受图片
    前端 img标签显示 base64格式的 图片
  • 原文地址:https://www.cnblogs.com/LiuSandy/p/9853578.html
Copyright © 2011-2022 走看看