发布Ajax调用json返回400,而rest客户端工作正常

时间:2016-06-30 18:54:05

标签: javascript json ajax rest content-type

我在服务器端使用运动衫,我的功能使用

@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。 有什么理由发生?

1 个答案:

答案 0 :(得分:0)

您应该对数据进行字符串化。

$.ajax({
   url: 'someUrl',
   type: 'post',
   contentType: "application/json; charset=utf-8",
   dataType: 'json',
   success: function (data) {
   },
   data: JSON.stringify(person)
});