spring mvc @RequestBody接受post json对象

jq ajax通过post json对象

遇到的HTTP 415/400问题错误解决方案:http://www.linuxidc.com/Linux/2014-04/99928.htm

客户端:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript"
	src="<%=basePath%>resources/scripts/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
$(function(){
    $("#send").click(function(){
    	var jsondata = $("#jsondata").val();
    	var jsonobj = JSON.parse(jsondata)
    	
    	var callback = function (data) {
    		$("#result").html(JSON.stringify(data))
    	}
    	
		$.postJSON('<%=basePath%>api/user/test', jsonobj, callback)

		});
	})

	$.postJSON = function(url, data, callback) {
		return jQuery.ajax({
			'type' : 'POST',
			'url' : url,
			'contentType' : 'application/json',
			'data' : JSON.stringify(data),
			'dataType' : 'json',
			'success' : callback
		});
	};
</script>
</head>
<body>
	JSON对象
	<br>
	<textarea id="jsondata" cols="60" rows="5">
{"id":2,"gender":0,"mobile":"15072370640","password":"123456","accessToken":"fd6bf3dd3cca4b0ca7c9099447994dba"}
	</textarea><br>

	<button id="send">POST</button><br>

	<font color="red" id="result"></font>
</body>
</html>


spring mvc 服务端:

@RequestMapping(value="/test",method=RequestMethod.POST)
public @ResponseBody Map<String, Object> testPostJson(
		@RequestBody  UserForm userForm,
		BindingResult bindingResult) {
		
	Map<String, Object> map = new HashMap<String, Object>();
	if (bindingResult.hasErrors()) {
		map.put("errorCode", "40001");
		map.put("errorMsg", bindingResult.getFieldError().getDefaultMessage());
	}
	
	map.put("user", userForm);
	return map;
}

测试:

spring mvc @RequestBody接受post json对象

结果

{"user":{"name":null,"id":2,"password":"123456","avatar":null,"gender":0,"mobile":"15072370640","accessToken":"fd6bf3dd3cca4b0ca7c9099447994dba"}}


注意:

@ResponseBody 导致的中文乱码问题见:http://my.oschina.net/freegeek/blog/287127

你可能感兴趣的:(spring mvc @RequestBody接受post json对象)