javascript
Spring MVC Controller与jquery ajax请求处理json
在用 spring mvc 寫(xiě)應(yīng)用的時(shí)候發(fā)現(xiàn)jquery傳遞的【json數(shù)組對(duì)象】參數(shù)后臺(tái)接收不到,多訂單的處理,ajax請(qǐng)求:
var cmd = {orders:[{"storeId":"0a1", "address":"西斗門(mén)路2號(hào)", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗門(mén)路2號(hào)", "goods":[{"goodsId":"4"}, {"goodsId":"4"}, {"goodsId":"5"}]}]} $.ajax({ url : url, type : "POST", datatype:"json", data : cmd, success : function(data, stats) { if (stats == "success") { // window.location.href="/yc" } }, error : function(data) { alert("請(qǐng)求失敗"); } });開(kāi)始如何傳后臺(tái)用 @RequestParam 去接收如何都接不到,分析下請(qǐng)求頭,原來(lái)是json格式?jīng)]轉(zhuǎn)換
Origin:http://localhost Referer:http://localhost/test/myorder User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1 X-Requested-With:XMLHttpRequest Form Dataview URL encoded orders[0][storeId]:0a1 orders[0][address]:西斗門(mén)路2號(hào) orders[0][goods][0][goodsId]:1 orders[0][goods][1][goodsId]:2 orders[0][goods][2][goodsId]:3 orders[1][storeId]:0a1 orders[1][address]:西斗門(mén)路2號(hào) orders[1][goods][0][goodsId]:4 orders[1][goods][1][goodsId]:4 orders[1][goods][2][goodsId]:5 Response Headersview source Content-Length:1051 Content-Type:text/html;charset=utf-8 Date:Mon, 26 Nov 2012 16:10:07 GMT Server:Apache-Coyote/1.1通過(guò)觀察,orders[0][storeId]:0a1?
orders[0][address]:西斗門(mén)路2號(hào)?
orders[0][goods][0][goodsId]:1 變成了多維數(shù)組的格式傳遞,沒(méi)有按json對(duì)象的方式傳遞(原以為 jquery會(huì)自動(dòng)轉(zhuǎn)的,可惜我想多了,所以出現(xiàn)了烏龍)。?
下了個(gè)jquery的json插件,jquery.json-2.4.js 轉(zhuǎn)了下json;但是問(wèn)題又來(lái)了,傳的格式正確但是后臺(tái)還是接不到,打印了下request.getParameterMap(),參數(shù)按json格式傳進(jìn)來(lái),但是接的方式又出現(xiàn)了問(wèn)題,用string接肯定不行,String數(shù)組接也接不到,List也接不到,網(wǎng)上查查相關(guān)Controller的接收json對(duì)象的方式,需要用@RequestBody來(lái)進(jìn)行接收,為了方便干脆把 orders去掉 直接用json數(shù)組
后臺(tái)用
(@RequestBody List orders)檢查下參數(shù)寫(xiě)法,應(yīng)該沒(méi)錯(cuò),測(cè)試之后還是有問(wèn)題 報(bào)了這樣一個(gè)錯(cuò)誤:?
POST http://localhost/test/order 415 (Unsupported Media Type)?這個(gè)問(wèn)題應(yīng)該是前臺(tái)請(qǐng)求過(guò)程中沒(méi)有指明contentType,ajax中加上contentType: "application/json; charset=utf-8",再測(cè)試,果然可以了。完整代碼如下:
ajax:?
Controller method:?
@RequestMapping(value = "/order", method = RequestMethod.POST) public ModelAndView order(@RequestBody List<Map<String,Object>> orders) { System.out.println("orders size:" + orders.size()); }以上希望能為遇到類(lèi)似問(wèn)題的朋友提供一些幫助。
Spring MVC Controller與jquery ajax請(qǐng)求處理json
轉(zhuǎn)載于:https://www.cnblogs.com/zhujiabin/p/5091051.html
總結(jié)
以上是生活随笔為你收集整理的Spring MVC Controller与jquery ajax请求处理json的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 武当山比较好的学生夏令营有哪些?
- 下一篇: JS笔记 入门第四