Ajax向后台传多个对象和数组
吐槽:当时我是真的气的想砸电脑 ,起初怎么调试都不过,400和415 我这辈子都不想在看到。
好 废话不多说 上代码:
前端ajax提交:
function save() { var foolTitle = $("#foolTitle").val(); var foolMakeTime =$("#foolMakeTime").val(); var foolPrice =$("#foolPrice").val(); var foolShopId= $("#foolShopId").val(); var fm = {foolTitle:foolTitle,foolMakeTime:foolMakeTime,foolPrice:foolPrice,foolShopId:foolShopId}; alert(JSON.stringify({"foolSeas":foolSeas,"fm":fm})); if(checkFormInfo() && foolTitleIsOK ){ $.ajax({ url:projectName+/user/addFoolMenuLibrary, type:POST, //请求头一定要加,不加直接进不了后台的接口中去 contentType:"application/json;charset=utf-8", //备注:fm是提前封装好的对象,foolSeas是数组。 data:JSON.stringify({"foolSeas":foolSeas,"foolLibraryMenu":fm}), success:function(result) { alert("success"); formRestInfo("#menuForm"); $("#foolSeasData").empty(); top.Dialog.close(); },error:function(){ alert("error"); } }) } }
后台接收:我是用一个包含了所有数据的pojo对象进行接收,接收对象需添加@RequestBody注解,通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上
@RequestMapping(value = "addFoolMenuLibrary", method = RequestMethod.POST) public ResponseEntity<Void> addFoolMenu(@RequestBody(required = true) FoolMenuAllInfo fm, HttpSession session) { try { User user = (User) session.getAttribute(Const.SESSION_USER); FoolLibraryMenu flm = fm.getFoolLibraryMenu(); // 如果为0说明是 后台添加 if (flm.getFoolShopId() == 0) { flm.setFoolShopId(null); flm.setFoolAddUserId("admin"); } else { flm.setFoolIsShop(Integer.parseInt(user.getUSER_ID())); flm.setFoolAddUserId(user.getUSERNAME()); } this.foolLibraryMenuService.saveSelective(flm); FoolLibraryMenu f = this.foolLibraryMenuService.queryOne(flm); this.foolSeasService.saveAll(fm.getFoolSeas()); // 查看 return ResponseEntity.status(HttpStatus.CREATED).build(); } catch (Exception e) { e.printStackTrace(); } // 出错500 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); }
bean类:
import java.util.List; public class FoolMenuAllInfo { private FoolLibraryMenu foolLibraryMenu; private List<FoolSeas> foolSeas;// 前端传过来的数组会封装成list对象 public FoolLibraryMenu getFoolLibraryMenu() { return foolLibraryMenu; } public void setFoolLibraryMenu(FoolLibraryMenu foolLibraryMenu) { this.foolLibraryMenu = foolLibraryMenu; } public List<FoolSeas> getFoolSeas() { return foolSeas; } public void setFoolSeas(List<FoolSeas> foolSeas) { this.foolSeas = foolSeas; } @Override public String toString() { return "FoolMenuAllInfo [foolLibraryMenu=" + foolLibraryMenu + ", foolSeas=" + foolSeas + "]"; } }
最后:踩坑之路没有尽头 ,能学到东西就是好事,遇到问题不用急 找到问题根源,借助工具,慢慢解决就好了。 一定要在这条路上越走越远。
下一篇:
c++解决四位玫瑰数/四叶玫瑰数的判断