spring-mvc接收不到ajax請求的數據


搗鼓了快一天時間翻了很多別人的文章。

也發現了很多人寫東西根本不負責任。明明錯的自己沒去試過還是轉載了。導致我也浪費了很多時間。

所以我決定以后自己遇到問題自己記錄下來。

開始說下問題。前台用ajax發送post請求。后台怎么也接受不到。

java代碼:

function phoneValidate(phone){
    	var flag = false;
    	$.ajax({
            type:"post",
            contentType :  "application/json; charset=utf-8",
            data: JSON.stringify({'phone':phone}),
            url:"phoneInUse.go",
            dataType: "json",
            async:  false, 
            success:function(result){
            	result = eval(result);
                if(result.valid){
                	flag = true;
                }
                else{
                	alert(result.message);
                	flag = false;
                }
            }
        });
      	return flag;
    }

后台代碼:

        /** 手機號是否已經被注冊*/
	@RequestMapping(value = "/phoneInUse", method=RequestMethod.POST, produces="application/json; charset=utf-8")
	public String phoneInUse(@RequestParam(value = "phone", required = true) String phone){
		try {
			User user = userService.getUserByPhone(phone);
			if (user != null && user.getId() != null) {
				return "{\"valid\":false,\"message\":\"手機號已被占用!\"}";
			}
		} catch (Exception e) {
			log.error("登錄名驗證失敗", e);
			e.printStackTrace();
			return "{\"valid\":false,\"message\":\"網站程序錯誤!\"}";
		}
		return "{\"valid\":true}";
	}

問題出在:@RequestParam 不能接收 contentType : "application/json; charset=utf-8" 的請求。

如果后台必須要用@RequestParam,

前台2個地方必須改:

1、contentType 改為 "application/x-www-form-urlencoded"

2、data: 改為{'phone':phone},

 

也可以不用改前台的js后台的@RequestParam....改為用@RequestBody的對象的形式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM