Spring MVC返回Map格式JSON数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC返回Map格式JSON数据相关的知识,希望对你有一定的参考价值。
问题描述: ajax中走error : function(e) {}
问题背景:
在测试controller层时,试过了ResponseEntity<ResponseModel>这种类型返回,这是可行的,但是出于好奇,想看看Map返回可不可行。结果出乎我预料,返回Map时JSP页面总是走error : function(e) {},这就奇怪了,刚才用ResponseEntity返回可行,而Map为什么不行呢?于是就查了ajax走error:function的原因,
原因:
1. 后台出错
2. 后台响应中断
3. 返回数据类型不是JSON
但是打了断点排除了,前两个原因,所以猜测很有可能是第三个原因。
Map返回本来就是没有将其转化为JSON格式,果然
在@RequestMapping上加上@ResponseBody,就可以将返回Map转化为json格式。
先记录下问题解决方法,夜深,等有时间再深究源码
参考:
http://www.iteye.com/problems/88859
https://segmentfault.com/q/1010000004152735?_ea=509054
准备深究参考:
http://mybloggers.blog.163.com/blog/static/1003865092010111631741468/
@ResponseBody
1 @RequestMapping(value = "/user/login", method = RequestMethod.POST) 2 public Map<String, Object> userRegister(@RequestBody User user) { 3 Map<String, Object> map = new HashMap<String, Object>(); 4 User userInfo = userLoginService.userRegister(user); 5 System.out.println(user.getNumber()); 6 if (userInfo != null) 7 map.put("code", "0"); 8 else 9 map.put("code", "1"); 10 11 return map; 12 13 }
<script type="text/javascript"> $(document).ready(function() { $("#login_user").click(function() { var username = $("#login_account").val(); var pass = $("#login_userPwd").val(); var user = { number : username, password : pass };//拼装成json格式 $.ajax({ type : "POST", url : "http://localhost:8080/iswust2hand/2hand/user/login", data : JSON.stringify(user), contentType : ‘application/json;charset=utf-8‘, dataType : ‘json‘, success : function(data) { if (data.code == ‘0‘) { window.location.href = "/iswust2hand/index.jsp"; alert("欢迎使用西科二手平台!"); }else{ alert("密码错误,请确认后重新登录!"); } }, error : function(data) { alert("出错:" + data.code); } }); }); }); </script>
前端新手,会点后端,欢迎大神交流!
以上是关于Spring MVC返回Map格式JSON数据的主要内容,如果未能解决你的问题,请参考以下文章