ajax傳參到controller時報錯400
阿新 • • 發佈:2019-02-10
這個問題研究半天,我一直想不明白,我就很納悶為什麼會報400錯誤!以前都這樣寫的,不應該啊!
controller裡面我@RequestMapping有,@ResponseBody也有。
這個錯誤什麼引起的呢?網上很多方法,我就不一一講了,我說說我的實現方法
在我的HTML頁面裡面有Date引數,所以在ajax進行傳輸的時候controller不能直接接收這個引數,所以報400錯誤!
解決方案:
1、將HTML頁面的input標籤的name名重新定義,不要和實體類的一樣。
2、在js中獲取html頁面的時間值
// 獲取使用者選中的時間 var endTimes = $('input[name=end]').val(); var startTimes = $('input[name=start]').val(); // 將資料傳到後臺去 $("#formIn").ajaxSubmit({ type: 'post', // 方法型別 url: '/hire/wt/hire/nanny/info/add', // url data: {startTimes:startTimes,endTimes:endTimes}, // 時間引數 success: function (result) { console.log(result);// 列印服務端返回的資料(除錯用) }, error : function(result) { alert("異常!"); } });
3、後臺controller使用HttpServletRequest來獲取前臺傳來的兩個值
@RequestMapping(value="/add", method={RequestMethod.GET,RequestMethod.POST}) public @ResponseBody Result add(HttpServletRequest request, WtHireNannyInfo wtHireNannyInfo) { String endTime = request.getParameter("endTimes"); String startTime = request.getParameter("startTimes"); // 判斷前臺傳過來的資料是否有值,有值就將值賦給物件中對應的欄位 if(endTime != null && startTime != null && endTime.length() > 0 && startTime.length() > 0){ wtHireNannyInfo.setStartTime(Date.valueOf(startTime)); wtHireNannyInfo.setEndTime(Date.valueOf(endTime)); } wtHireNannyInfoService.save(wtHireNannyInfo); return ResultGenerator.genSuccessResult(wtHireNannyInfo); }
這樣就OK了!