时间:2021-05-26
今日工作中遇到了需要从JSP传递对象数组到后台的需求,网上辗转找了很多资料,终于解决。苦于网上很多资料不全,故记录下详细解决过程。如下:
JSP:
function addAccount(){ debugger; var html = ''; var ary = $("#match_account").find("p"); var _list = new Array(); if(ary.length){ for(var i = 0,len = ary.length;i < len;i ++){ var account = new Object(); html += '<li class="fl mb8" data-id="'+ary[i].id+'" data-sort="0">'; html += '<span class="mr8 display-ib" style="background:#eee;padding:0px 5px 6px 5px">'; html += '<span data-id="">'+ary[i].innerHTML+'</span>'; html += '<a onclick="deleteAccount(this);" href="javascript:;" rel="external nofollow" class="js-btn-remove-tag ml4" style="vertical-align:5px;color:#999;" title="删除">x</a>'; html += '</span>'; html += '</li>'; account.accountId = ary[i].id; account.account = ary[i].innerHTML; _list.push(account); } $.ajax({ type: "post", url: "${ctx}/companyAccount/addContributeAccounts", data : {list : JSON.stringify(_list)}, async: false, success: function (json) { var result = json.obj.result; if(result != 1){ layer.error('添加账号失败.'); } } }); } $("#contribute_account").append(html); }关键之处有三:
一,定义数组
var _list = new Array();二,定义对象,并迭代添加对象属性,最后push进数组
var account = new Object();account.accountId = ary[i].id; account.account = ary[i].innerHTML; _list.push(account);三,提交时转换数组对象
data : {list : JSON.stringify(_list)}后台java:
/** * 添加投稿账号 */ @RequestMapping(value = "addContributeAccounts") @ResponseBody public JsonResult addContributeAccounts(String list) { JSONArray ary = JSONArray.fromObject(list); if(ary != null && ary.size() > 0){ List<RegionContributeAccount> accountList = (List<RegionContributeAccount>)JSONArray.toCollection(ary, RegionContributeAccount.class); for(RegionContributeAccount account : accountList){ companyAccountService.insertContributeAccount(account); } } Map<String, Object> obj = new HashMap<String, Object>(); obj.put("result", 1); return JsonResult.success(obj); }后台要点有二,
一,转换ary数组
JSONArray ary = JSONArray.fromObject(list);二,数组转自定义java对象
List<RegionContributeAccount> accountList = (List<RegionContributeAccount>)JSONArray.toCollection(ary, RegionContributeAccount.class);自此,便打通前后端任督二脉。
以上这篇ajax从JSP传递对象数组到后台的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
今天重温了一个问题,jQuery.ajax向后台传递一个数组,而在后台接收不到该值。前台js方法部分代码如下://创建一个测试数组varboxIds=newAr
ajax提交数据到后台jsp页面及页面跳转问题我logincheck.jsp页面取传参数代码:Stringuser=request.getParameter("
请求的ajax路径传递的参数(data)会到action中被一个同样名字的变量(附带setget方法)接收,返回的data是一个JQuery的数组对象,在被调用
jQuery.param(obj):创建适用于URL查询字符串或Ajax请求的数组,普通对象或jQuery对象的序列化表示形式。如果jQuery对象被传递,它应
传递参数传递字符串,所以要把数组转换为字符串,vararr=[1,23,34,5];varstr=arr.toString();str传递到后台,str.spl