我在服务器端使用运动衫,我的功能使用
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response someFunction(SomeClass obj,@Context HttpServletRequest req){}
但是当我使用content-type =" application / json"进行http post调用时并且来自Advanced Rest Client的有效负载为{"name":"abc","age":"20"}
,然后呼叫将成功呼叫。
但是如果我创建一个像ajax一样调用ajax的客户端,
var person = {
name: "abc",
age:"20",
}
$.ajax({
url: 'someUrl',
type: 'post',
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (data) {
},
data: person
});
然后此调用将返回400错误请求,并且它不会进入服务器端的函数内部。如果我们以字符串的形式传递person对象,
"{\"name\":\"abc\",\"\age":\"20\"}"
然后ajax调用也返回200。 有什么理由发生?
答案 0 :(得分:0)
您应该对数据进行字符串化。
$.ajax({
url: 'someUrl',
type: 'post',
contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (data) {
},
data: JSON.stringify(person)
});