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元素的对象中。