[英]400 Bad request on Spring Jquery Ajax Post
我在這個POST請求上收到400個錯誤請求。 知道這里的問題是什么嗎? 日志在這里 。
調節器
@Controller
public class AjaxController {
@RequestMapping(value="/addKeys", method=RequestMethod.POST, consumes="application/json; charset=UTF-8")
public ResponseEntity<String> addKeys(@RequestParam(value="keys") ArrayList<Keys> keys){
System.out.println("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"+keys);
}
}
上下文servlet.xml中
<beans>
<mvc:annotation-driven />
<context:component-scan base-package="com.canon.fw.controller" />
<bean id="defaultViews" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</beans>
阿賈克斯
tmpList = '[{"key":"camera","label":"Camera"},{"key":"mobile","label":"Mobile"}]';
$.ajax({
type: 'POST',
url: ctx+'/ajx/addKeys',
data: JSON.stringify({"keys": tmpList }),
success: function(r){
if(r.model.status=='success'){
debugger;
//glist.push(elem.key);
//addToList(elem.key, elem.label);
highlightInfoDisc();
}
},
dataType: 'json',
contentType: 'application/json'
});
FireBug - URL
http://localhost:8080/Di/ajx/addKeys
Firebug - 響應標題
Cache-Control must-revalidate,no-cache,no-store
Content-Length 1384
Content-Type text/html; charset=iso-8859-1
Server Jetty(6.1.26)
Firebug - 請求標題
Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Content-Length 74
Content-Type application/json; charset=UTF-8
Cookie JSESSIONID=7mymobst47ig1s7uqy2z1fvx4
Host localhost:8080
Referer http://localhost:8080/Di/tiles/entNews.htm
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
X-Requested-With XMLHttpRequest
Firebug - 來源
{"keys":[{"key":"canon","label":"Canon"},{"key":"ricoh","label":"Ricoh"}]}
螢火蟲 - 回應
"NetworkError: 400 Bad Request - http://localhost:8080/Di/ajx/addKeys"
您正在發布JSON,而不是表單數據,但您正在嘗試將ArrayList<Keys>
作為表單參數讀取。
嘗試更改方法簽名:
public ResponseEntity<String> addKeys(@RequestParam(value="keys") ArrayList<Keys> keys){
至
public ResponseEntity<String> addKeys(@RequestBody Keys[] keys){
這可能不起作用,因為您的JSON具有一個具有keys
屬性的對象,該keys
屬性是鍵列表。 因此,您可以嘗試將ajax發布數據更改為類似的內容
data: JSON.stringify(tmpList)
所以你只是發布列表而不是將它包裝在另一個具有keys元素的對象中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.