码迷,mamicode.com
首页 > Web开发 > 详细

Jquery序列化form表单对象

时间:2018-10-25 23:43:20      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:cep   个数   log   转化   val   NPU   object   pos   一个   

在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)

Jquery序列化form表单对象

标签:cep   个数   log   转化   val   NPU   object   pos   一个   

原文地址:https://www.cnblogs.com/LiuSandy/p/9853578.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!