我有以下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));
});
服务器的响应是:
“status”:400,“statusText”:“错误请求”
“客户发送的请求在语法上是不正确的。”
服务器正在运行Spring-MVC。但据我所知,它的工作正常。因为如果我使用Postman手动发送请求,并且以下配置可以正常工作。
部首:
Content-Type application/json; charset=utf-8
内容:
{"firstname":"alex","lastname":"lala","role":"admin"}
我必须提到它是一个跨域请求(在开发时,它将在稍后与服务器托管在同一个域上)。我确实禁用了浏览器中的安全设置,并且对服务器的AJAX请求工作正常(只要我不必发送数据)。
答案 0 :(得分:7)
你需要序列化你的json,试试:
$.ajax({
type: 'POST',
url : 'http://awesome-url',
crossDomain: true,
data: JSON.stringify(user),
contentType:'application/json; charset=utf-8',
dataType: 'json'
})