待解决:
为什么用了@ResponseBody 还用JSON.toJSONString(remainUser)
参考:
JSON.toJSONString()方法参考 :Fastjson 简明教程
已解决:
参考:
Http请求中Content-Type讲解以及在Spring MVC注解中produce和consumes配置详解
RequestMapping注解中consumes与produces的区别
SpringMVC @RequestBody接收Json对象字符串
json.stringify()的妙用,json.stringify()与json.parse()的区别
jQuery.ajax() 如何设置 Headers 中的 Accept 内容
后端:
@ResponseBody //不知道返回的是对象还是字符串,反正前端dataType能控制
//跨域
@CrossOrigin(origins = "http://localhost:8080")
//方法仅处理request Content-Type为“application/json”类型的请求. produces标识==>处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;
//consumes 用来限制ContentType ,consumes="application/json" ------还没看懂,感觉有没有都一样
//produces 用来限制Accept , produces="application/json" ------还没看懂,感觉有没有都一样
//params: 指定request中必须包含某些参数值是,才让该方法处理
//headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求
@RequestMapping(value = "login",method = RequestMethod.POST)
public Map<Object, Object> login(@RequestBody User user, HttpSession session) { //@RequestBody这里接收的是字符串
HashMap<Object, Object> map = new HashMap<>();
map.put("code","登陆成功");
return map;
}
前端:
<script type="text/javascript">
var userID;
var userNameN;
$(function(){
$("#loginBtn").click(function(){
var data = {username:$(" #username ").val(),password:$(" #password ").val()};
$.ajax({
//请求方式
type:'POST',
//发送请求的地址
url:'http://localhost:8081/app/login',
//发送到服务器的数据,对象必须为key/value的格式
contentType:"application/json;charset=UTF-8",
//将data转为字符串
data: JSON.stringify(data),
//服务器返回的数据类型
dataType:'json',
success:function(data){ //这里的data是个对象
alert(data.code);
if(data.user.userStatus == 1) {
userID=data.user.userId;
userNameN=data.user.userName;
$(location).attr('href', 'index.html');
}else if(data.user.userStatus == 2) {
$(location).attr('href', 'manage.html');
}
},
error:function(jqXHR){
alert("发生未知错误");
}
})
})
});
</script>