1. 程式人生 > >ajax傳參到controller時報錯400

ajax傳參到controller時報錯400

這個問題研究半天,我一直想不明白,我就很納悶為什麼會報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了!