分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

Jquery序列化form表单对象

发布时间:2023-09-06 02:19责任编辑:苏小强关键词:form表单

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

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

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

key1=value1&key2=value2key:是控件的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表单对象

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved