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)
    
  • 相关阅读:
    经典排序算法——堆排序
    Jumpserver双机高可用环境部署笔记
    实战:使用SVN+apache搭建一个版本控制服务器
    linux开启swap(磁盘缓存)操作
    Jenkins + Pipeline 构建流水线发布
    Elasticsearch 5.0 安装 Search Guard 5 插件
    大数据平台搭建(hadoop+spark)
    centos7搭建ELK Cluster集群日志分析平台
    ELK 之三:Kibana 使用与Tomcat、Nginx 日志格式处理
    ELK 日志分析实例
  • 原文地址:https://www.cnblogs.com/LiuSandy/p/9853578.html
Copyright © 2011-2022 走看看