日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring MVC Controller与jquery ajax请求处理json

發布時間:2023/12/1 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring MVC Controller与jquery ajax请求处理json 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在用 spring mvc 寫應用的時候發現jquery傳遞的【json數組對象】參數后臺接收不到,多訂單的處理,ajax請求:

var cmd = {orders:[{"storeId":"0a1", "address":"西斗門路2號", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗門路2號", "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("請求失敗"); } });

開始如何傳后臺用 @RequestParam 去接收如何都接不到,分析下請求頭,原來是json格式沒轉換

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]:西斗門路2號 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]:西斗門路2號 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

通過觀察,orders[0][storeId]:0a1?
orders[0][address]:西斗門路2號?
orders[0][goods][0][goodsId]:1 變成了多維數組的格式傳遞,沒有按json對象的方式傳遞(原以為 jquery會自動轉的,可惜我想多了,所以出現了烏龍)。?

下了個jquery的json插件,jquery.json-2.4.js 轉了下json;但是問題又來了,傳的格式正確但是后臺還是接不到,打印了下request.getParameterMap(),參數按json格式傳進來,但是接的方式又出現了問題,用string接肯定不行,String數組接也接不到,List也接不到,網上查查相關Controller的接收json對象的方式,需要用@RequestBody來進行接收,為了方便干脆把 orders去掉 直接用json數組

var cmd = [{"storeId":"0a1", "address":"西斗門路2號", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗門路2號", "goods":[{"goodsId":"4"}, {"goodsId":"4"}, {"goodsId":"5"}]}]

后臺用

(@RequestBody List orders)

檢查下參數寫法,應該沒錯,測試之后還是有問題 報了這樣一個錯誤:?
POST http://localhost/test/order 415 (Unsupported Media Type)?這個問題應該是前臺請求過程中沒有指明contentType,ajax中加上contentType: "application/json; charset=utf-8",再測試,果然可以了。完整代碼如下:
ajax:?

var cmd = [{"storeId":"0a1", "address":"西斗門路2號", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗門路2號", "goods":[{"goodsId":"4"}, {"goodsId":"4"}, {"goodsId":"5"}]}] $.ajax({ url : url, type : "POST", datatype:"json", contentType: "application/json; charset=utf-8", data : $toJSON(cmd), success : function(data, stats) { if (stats == "success") { // window.location.href="/yc" } }, error : function(data) { alert("請求失敗"); } });

Controller method:?

@RequestMapping(value = "/order", method = RequestMethod.POST) public ModelAndView order(@RequestBody List<Map<String,Object>> orders) { System.out.println("orders size:" + orders.size()); }

以上希望能為遇到類似問題的朋友提供一些幫助。

Spring MVC Controller與jquery ajax請求處理json

轉載于:https://www.cnblogs.com/zhujiabin/p/5091051.html

總結

以上是生活随笔為你收集整理的Spring MVC Controller与jquery ajax请求处理json的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。