ajax从JSP传递对象数组到后台的方法
今日工作中遇到了需要从JSP传递对象数组到后台的需求,网上辗转找了很多资料,终于解决。苦于网上很多资料不全,故记录下详细解决过程。如下:
JSP:
functionaddAccount(){ debugger; varhtml=''; varary=$("#match_account").find("p"); var_list=newArray(); if(ary.length){ for(vari=0,len=ary.length;i'; html+=' '; html+=' '+ary[i].innerHTML+''; html+=' x'; html+=''; html+=''; 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){ varresult=json.obj.result; if(result!=1){ layer.error('添加账号失败.'); } } }); } $("#contribute_account").append(html); }
关键之处有三:
一,定义数组
var_list=newArray();
二,定义对象,并迭代添加对象属性,最后push进数组
varaccount=newObject();
account.accountId=ary[i].id; account.account=ary[i].innerHTML; _list.push(account);
三,提交时转换数组对象
data:{list:JSON.stringify(_list)}
后台java:
/** *添加投稿账号 */ @RequestMapping(value="addContributeAccounts") @ResponseBody publicJsonResultaddContributeAccounts(Stringlist){ JSONArrayary=JSONArray.fromObject(list); if(ary!=null&&ary.size()>0){ ListaccountList=(List )JSONArray.toCollection(ary, RegionContributeAccount.class); for(RegionContributeAccountaccount:accountList){ companyAccountService.insertContributeAccount(account); } } Map obj=newHashMap (); obj.put("result",1); returnJsonResult.success(obj); }
后台要点有二,
一,转换ary数组
JSONArrayary=JSONArray.fromObject(list);
二,数组转自定义java对象
ListaccountList=(List )JSONArray.toCollection(ary, RegionContributeAccount.class);
自此,便打通前后端任督二脉。
以上这篇ajax从JSP传递对象数组到后台的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。