1.jQuery.ajax向后台传递一个数组,在后台接收该值
前台js方法部分代码如下:(注意添加
traditional: true
)语句,否则会后台无法接受到数据
function saveTopic(){ var radios=document.getElementsByClassName('topicSelect'); var pageID = [[${paper.getId()}]]; var addId = new Array(); var flag = false; for (var j = 0; j <radios.length;j++) { if (radios[j].checked) { addId.push(radios[j].getAttribute("name")); flag =true; } } console.log(addId); if(flag){ $.ajax({ type: "post", // 以post方式发起请求 url: "/admin/paperTopicAdd", // 你的请求链接 data: { // 提交数据 "addId": addId, "pageId": pageID// 前者为字段名,后者为数据 }, traditional: true,//这里需要添加该语句,否则会失败 success(data) { // data为返回值 // 成功后的回调方法 alert(data); if(data=="SUCCESS"){ location.reload(); }else{ alert("添加失败,请刷新重试"); } } }) }else { alert("未选中题目"); } }
后台controller代码(SpringMVC):
@PostMapping("/paperTopicAdd") @ResponseBody public String paperTopicAdd(@RequestParam("addId") String[] addId,@RequestParam("pageId") String pageId) { System.out.println("addId="+addId); System.out.println("pageId="+pageId); TestPaper page = testPaperService.findById(pageId); String topicList = page.getTopicList(); String[] split = topicList.split(","); List<String> list= Arrays.asList(split); List<String> arrayList=new ArrayList<String>(list);//转换为ArrayLsit调用相关的remove方法 String result = ""; for(String id : addId){ if(!list.contains(id)){ arrayList.add(id); } } result = Tools.listConvertToString(arrayList,","); System.out.println("result:"+result); int updateResult = testPaperService.Update(Integer.valueOf(pageId), result); System.out.println("updateResult:"+updateResult); return "SUCCESS"; }