form表单序列化为json

it2022-05-05  148

开发过程中,可能会涉及到表单提交,如果直接提交,那整个页面会刷新,并且也无法获取对应的提示信息。所以表单提交通常用ajax来实现,如果整个表单的字段很多,一个个的拼接很麻烦,这里介绍一个工具

common.js代码

//form序列化为json $.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; };

前端页面

导入js

<script src="${pageContext.request.contextPath}/js/comm/common.js"></script>

使用方法:

/** * 提交修改数据 */ function submitUpdate(){ var formdata = $("#roleForm").serializeObject(); var url = "update"; $.ajax({ type : "Post", contentType : "application/json; charset=utf-8", // 方法所在页面和方法名 dataType : "json", data : JSON.stringify(formdata), url : url, success : function(data) { if(data.code == 0){ return layer.msg(data.error); }else{ //成功 layer.closeAll(); layer.msg(data.error, {icon: 1}); setTimeout(function(){ $("#form").submit(); },2000); } } }); }

注意这里的#form是表单的值

 

后台代码:

/** * 新增或者修改权限 根据id判断是新增还是修改 * @param authority * @return */ @SuppressWarnings("all") @RequestMapping(value = "update") @ResponseBody public BaseDataResult update(@RequestBody RoleVo role){ Principal principal = getLoginAdminInfo(); if(null == principal){ logger.info("--------------获取登录用户身份信息为空!"); return new BaseDataResult(Constans.FAILED, "获取登录用户身份信息为空"); } BaseDataResult result; OperationType type = null; try { if(role != null && role.getId() == null) { //新增 type = OperationType.ADD; } if(role != null && role.getId() != null) { //修改 type = OperationType.UPDATE; } result = roleServiceImpl.insertOrUpdate(role,principal,type); } catch (Exception e) { return new BaseDataResult(Constans.FAILED, type.getDesc()+"操作异常"); } return result; }

 

程序猿学社 认证博客专家 Java Spring Boot 公众号程序猿学社,关注社长,跟着社长一起学习github文章系统整理https://github.com/ITfqyd/cxyxs

最新回复(0)