这个问题也是搅了半天,才弄好这个问题,写出来是希望大家不要出现同样的问题,关键是避免自己以后现在同样问题。
前端JavaScript代码:
function getJsonData(){ $.ajax({ // 传输数据的方式:POST/GET type : "post", // 请求URL url : "${pageContext.request.contextPath}/json/getData", // 请求的数据类型 contentType : "application/json;charset=utf-8", // 传输到后台的数据 data : '{"userName" : "wumingshi", "gender" : "male"}', dataType : "json", // 请求成功 success : function(data){ alert(data.userName + ", " + data.gender); console.log("服务器传输到前台的数据:" + data); } }); }
后端的java代码如下:
@Controller @RequestMapping("/json") public class JsonHandlerController { @RequestMapping(value = "/getData", method = RequestMethod.POST, produces = "text/html;charset=UTF-8") public @ResponseBody Person getData(@RequestBody Person person) { System.out.println("姓名:" + person.getUserName() + ", 性别:" + person.getGender()); return person; } }
前端向后台请求时,总是没有任何结果,在浏览器中查看JavaScript出错信息如下:
报错:406 Not Acceptable,意思就前台无法接受后台信息,也就是前后也后台信息不匹配,出错的原意是,如下:
把produces的值改为 application/json;charset=utf-8 就好了,如果配置文件中配置charset=utf-8 ,防止出现乱码的话,其实这里的produces就可以直接去掉。