Spring Jquery Ajax Post上有400个错误请求

我在这个POST请求上收到400个错误请求。 知道这里的问题是什么吗? 日志在这里 。

调节器

@Controller public class AjaxController { @RequestMapping(value="/addKeys", method=RequestMethod.POST, consumes="application/json; charset=UTF-8") public ResponseEntity addKeys(@RequestParam(value="keys") ArrayList keys){ System.out.println("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"+keys); } } 

上下文servlet.xml中

      

阿贾克斯

 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作为表单参数读取。

尝试更改方法签名:

 public ResponseEntity addKeys(@RequestParam(value="keys") ArrayList keys){ 

 public ResponseEntity addKeys(@RequestBody Keys[] keys){ 

这可能不起作用,因为您的JSON具有一个具有keys属性的对象,该keys属性是键列表。 因此,您可以尝试将ajax发布数据更改为类似的内容

 data: JSON.stringify(tmpList) 

所以你只是发布列表而不是将它包装在另一个具有keys元素的对象中。