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