今天改一个别人写的项目,遇到了一个很奇怪的问题
(controller方法体上都写了@RestController @RequestMapping("/users")),
之前那个人前端用的是JQuery发送ajax请求,前端代码:
$.ajax({
url: "/users/login",
type: "POST",
data: $("#form-login").serialize(),
dataType: "json",
success: function (json) {
if (json.state == 200) {
// alert(json.data.previousUrl);
alert("登录成功!");
// 跳转回登陆前访问的页面
if (json.data.previousUrl == null || json.data.toString().indexOf("favicon.ico") != -1)//避免 http://localhost:8080/favicon.ico
location.href = "index.html";
else
location.href = json.data.previousUrl;
} else {
alert("登录失败!" + json.message);
}
}
});
前端参数:
{username: "321", password: "321"}
后端:
@RequestMapping(value = "/login")
public JsonResult<User> UserLogin(String username,String password, HttpSession session) {}
这样可以接收到username和password,
但是,我改成axios后,就接收不到了,
改之后前端:
login() {
// 设置cookie
this.isSetCookie();
let _this = this;
axios.post('/users/login', {username:_this.username,password:_this.password}).then(function (response) {
console.log("接收数据:" + response.data.state)
if (response.data.state == 200) {
// alert(json.data.previousUrl);
alert("登录成功!");
// 跳转回登陆前访问的页面
if (response.data.data.previousUrl == null || response.data.data.toString().indexOf("favicon.ico") != -1)//避免 http://localhost:8080/favicon.ico
location.href = "index.html";
else
location.href = response.data.data.previousUrl;
} else {
alert("登录失败!" + response.data.message);
}
})
}
后端只有改成这样才行(或者改成get请求方式也行):
@RequestMapping(value = "/login",produces = "application/json;charset=UTF-8")
public JsonResult<User> UserLogin(@RequestBody User user, HttpSession session) {}
不知道为什么,,,迷茫QAQ。
另外这个
@RequestMapping(value = "/XXX",produces = "application/json;charset=UTF-8")
好像能解决很多种json格式的数据获取不到的情况。。
现在好像弄明白了一点
$("#form-login").serialize()
传的不是json格式的,它的参数就是
username:XXX
password:xxx
而axios传递的是json格式的