Java 使用JSON调用Ajax时出现400错误

Java 使用JSON调用Ajax时出现400错误,java,ajax,json,spring-mvc,Java,Ajax,Json,Spring Mvc,我不确定我这样做有什么不对。。。 我收到一个400错误,说这是一个错误的请求,但我找不到我的语法有任何错误 $.ajax({ url : '/my_project/rest/runs/1234?token=moo', type : 'POST', data: { job_position : JSON.stringify(38) }, contentType: 'application/json', dataType

我不确定我这样做有什么不对。。。 我收到一个400错误,说这是一个错误的请求,但我找不到我的语法有任何错误

$.ajax({
        url : '/my_project/rest/runs/1234?token=moo',
        type : 'POST',
        data: { job_position : JSON.stringify(38) },
        contentType: 'application/json',
        dataType: 'json',
        success : function(html) {
        }
    });
接收控制器:

@RequestMapping(value="/runs/{userId}", method = RequestMethod.POST, consumes = {"application/json"})
    public @ResponseBody boolean myMethod(@PathVariable String userId, @RequestParam("token") String authenticationToken, @RequestBody @Valid Long job_position){
        return true;
    }

您的数据部分是否缺少引号? 数据:{“作业位置”:JSON.stringify(38)}


只是想一想。

/my_project/rest/runs/1234?token=moo
-这是获取请求sintax

制造
url:'/my_project/rest/runs/1234'


data:{“job_position”:JSON.stringify(38),“token”:“moo”}

所以完整的请求看起来像

$.ajax({
        url : '/my_project/rest/runs/1234',
        type : 'POST',
        data: { "job_position" : 38, "token" : "moo"},
        contentType: 'application/json',
        dataType: 'json',
        success : function(html) {
        }
    });

如果请求中没有实际发送JSON,jQuery会将对象转换为查询字符串。为了防止这种情况,你自己把它严格化

$.ajax({
        url : '/my_project/rest/runs/1234',
        type : 'POST',
        data: JSON.stringify({ job_position : 38, token: 'moo' }),
        contentType: 'application/json',
        dataType: 'json',
        success : function(html) {
        }
});

他说,这是一个很好的做法,放置引号,并防止保留字。这是缺少引号,正如拉达什克提到的,这不是强制性的。但是我现在添加它只是为了100%的安全。为什么要把这个数字字符串化呢?我在我的请求负载中得到这个:“job_position=26&token=moo”我还更改了我的控制器,这样我就有了一个包含一个令牌和一个job position的响应对象。