AJAX请求的"400 Bad Request"响应

rob*_*rob 9 javascript jquery spring-mvc

我有以下jQuery AJAX请求:

// collect form data and create user obj
var user = new User();
user.firstname =  $("#usrFirstName").val();
user.lastname =  $("#usrSurname").val();
user.role =  $("#usrRole").val();

// actual ajax request
$.ajax({
    type: 'POST',
    url : 'http://awesome-url',
    crossDomain: true,
    data: user,
    contentType:"application/json; charset=utf-8",
    dataType: 'json'
}).done(function(data, status) {
    alert(JSON.stringify(data));
}).fail(function(data, status) {
    alert(status);
    alert(JSON.stringify(data));
});
Run Code Online (Sandbox Code Playgroud)

服务器的响应是:

"status":400,"statusText":"错误请求"
"客户端发送的请求在语法上不正确."

服务器正在运行Spring-MVC.但据我所知,它的工作正常.因为如果我用Postman手动发送请求,并且以下配置可以正常工作.

标题:

Content-Type application/json; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

内容:

{"firstname":"alex","lastname":"lala","role":"admin"}
Run Code Online (Sandbox Code Playgroud)

我必须提到它是一个跨域请求(在开发时,它将在稍后与服务器托管在同一个域上).我确实禁用了浏览器中的安全设置,并且对服务器的AJAX请求工作正常(只要我不必发送数据).

R. *_*olt 8

你需要序列化你的json,试试:

$.ajax({
    type: 'POST',
    url : 'http://awesome-url',
    crossDomain: true,
    data: JSON.stringify(user),
    contentType:'application/json; charset=utf-8',
    dataType: 'json'
})
Run Code Online (Sandbox Code Playgroud)