2012-08-31 27 views
2

我不知道什麼是錯誤的辦法,我這樣做... 我得到一個400錯誤,說這是一個壞的要求,但我不能發現任何錯誤與我的語法。得到一個400錯誤的Ajax調用使用JSON

$.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; 
    } 
+2

你爲什麼把這個數字串起來? – Samson

回答

1

你沒有真正在您的要求,jQuery的發送JSON會將您的對象轉換爲查詢條件G。爲了防止它自己串起來。

$.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) { 
     } 
}); 
2

是您的數據丟失部分報價? 數據:{ 「job_position」:JSON.stringify(38)}

只是一個想法。

+2

不是強制性... – Samson

+0

http://stackoverflow.com/questions/949449/json-spec-does-the-key-have-to-be-surrounded-with-quotes說,這是一個很好的做法,把報價和也要防範保留字。 – edocetirwi

+0

缺少引號,正如radashk提到的那樣,它不是強制性的。但我現在只是爲了100%安全而添加它。 – Johannes

2

/my_project/rest/runs/1234?token=moo - 這是GET請求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) { 
     } 
    }); 
+0

我得到這個在我的要求有效載荷:「job_position = 26&記號=哞」 我也改變了我的控制器,讓我有一個包含一個令牌和一個工作位置的單個響應對象。 – Johannes

相關問題