為什麼我的AJAX請求處理成功了,還報404錯誤?
阿新 • • 發佈:2019-01-09
今天遇到了一個很離奇的場景,使用ajax請求後臺結果 後臺處理成功了頁面還報了404錯誤。
程式設計師不說話,默默上程式碼:
JS:
後端:var save = function(){ $.ajax({ url: urlMap.saveOrUpdateGroupInfo, type: 'post', async: false, dataType: 'json', data: $("#groupInfo").serialize() }).done(function(res) { console.log(res); if(res.success) { }else{ bootbox.alert(res.msg); } }); }
挺奇怪吧?@RequestMapping(value = "/saveOrUpdate", method = RequestMethod.POST) public ResponseVo saveOrUpdate(String id, String name, String parentId, String parentName, String operate){ ResponseVo result = new ResponseVo(); GroupInfo info = new GroupInfo(); Date now =new Date(); info.setUpdateTime(now); try{ if(operate.equals("add")){ info.setParentId(Integer.parseInt(parentId)); info.setName(name); info.setCreateTime(now); groupInfoService.addGroup(info); }else if (operate.equals("edit")) { info.setId(Integer.parseInt(id)); info.setName(name); info.setParentId(Integer.parseInt(parentId)); groupInfoService.updateGroup(info); }else if (operate.equals("delete")) { groupInfoService.deleteGroup(Integer.parseInt(id)); } result.setSuccess(true); }catch (Exception e){ log.error("operate group error."+ JsonUtil.toString(info), e); result.setSuccess(false); result.setMsg(e.getMessage()); } return result; } }
經分析是請求沒有返回狀態碼,這是因為我用的是SpringMVC框架,前後端使用JSON傳遞資料,因為返回的是物件,而忘記了新增
@ResponseBody
註解,所以 Spring對我的返回值進行了對映,但是對映結果又對應不到檢視,所以返回了404
正常後臺程式碼:
@RequestMapping(value = "/saveOrUpdate", method = RequestMethod.POST) @ResponseBody public ResponseVo saveOrUpdate(String id, String name, String parentId, String parentName, String operate){ ResponseVo result = new ResponseVo(); GroupInfo info = new GroupInfo(); Date now =new Date(); info.setUpdateTime(now); try{ if(operate.equals("add")){ info.setParentId(Integer.parseInt(parentId)); info.setName(name); info.setCreateTime(now); groupInfoService.addGroup(info); }else if (operate.equals("edit")) { info.setId(Integer.parseInt(id)); info.setName(name); info.setParentId(Integer.parseInt(parentId)); groupInfoService.updateGroup(info); }else if (operate.equals("delete")) { groupInfoService.deleteGroup(Integer.parseInt(id)); } result.setSuccess(true); }catch (Exception e){ log.error("operate group error."+ JsonUtil.toString(info), e); result.setSuccess(false); result.setMsg(e.getMessage()); } return result; }