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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375217.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

課堂例子解答

Editbox 等價類劃分測試用例例子 要求輸入1到6個英文字符或數字&#xff0c;按OK結束并輸入。 其中有效等價類包括:1.長度1-6&#xff0c;2.a-z,A-Z,0-9 無效等價類包括&#xff1a;1.長度0或大于6&#xff0c;2.輸入字母數字以外的字符&#xff0c;控制字符&#xff0c;標點符…

從代碼里提取的測試需求

服務器端的測試&#xff0c;軟件需求基本等于產品說明書&#xff0c;只有大概&#xff0c;沒有詳盡。再需求不充分的情況下&#xff0c;我們可以從哪些方面來挖掘測試需求呢&#xff1f; 現已知需求&#xff1a;服務器支持對客戶端的版本升級&#xff0c;存在兩種升級規則&…

PUSH/POP

棧操作指令PUSH 寄存器/段寄存器/內存單元POP 寄存器/段寄存器/內存單元PUSH AX1)SPSP-2 ,SS:SP指向新的內存單元2)將AX送入SS:SP指向的內存單元POP AX1)將SS:SP指向的內存單元處的數據送入AX中2)SPSP2

Android Ant 和 Gradle 打包流程和效率對照

一、Ant 打包&#xff1a;&#xff08;下載ant、配置環境變量就不說了&#xff09; 1、進入命令行模式&#xff0c;并切換到項目文件夾。運行例如以下命令為ADT創建的項目加入ant build支持&#xff1a; android update project -p . -t "android-17" 2、build腳本默…

讀軟件工程這本書的感悟(第一次作業)

在還沒上這門課之前&#xff0c;我認為軟件工程是讓我們學會編寫軟件&#xff0c;但是在看到這本書后&#xff0c;我才知道我們學的不是如何的開發軟件&#xff0c;而是在學習開發和維護軟件&#xff0c;以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術…

請大家編譯連接并執行一下

由于是筆記&#xff0c;也許記得有點糟糕&#xff0c;也許班門弄斧沒有獨到見解 &#xff0c;見諒見諒

KVC和KVO

OC中的一個比較有特色的知識點&#xff1a;KVC和KVO一、KVC操作OC中的KVC操作就和Java中使用反射機制去訪問類的private權限的變量&#xff0c;很暴力的&#xff0c;這樣做就會破壞類的封裝性&#xff0c;本來類中的的private權限就是不希望外界去訪問的&#xff0c;但是我們這…

8086加法指令ADD

加法指令ADD(ADDition) ADD OPRD1,OPRD2 ;OPRD1<--OPRD1OPRD2 ;完成OPRD1與OPRD2相加 ,結果保存在OPRD1中CODE SEGMENT MOV AX,1 MOV BX,2 ADD AX,BX ;AX<--AXBX ,結果AX3CODE ENDS參與運算的操作數類型必須保持一致,同為字節或字可組合以下幾種形式&…

Fragment基礎講解

//新建一個碎片public class LeftFragment extends Fragment { Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // 加載一個碎片界面 View view inflater.inflate(R.layout.leftfragment, container, false)…

[bzoj1012](JSOI2008)最大數maxnumber(Fenwick Tree)

Description 現在請求你維護一個數列&#xff0c;要求提供以下兩種操作&#xff1a; 1、 查詢操作。語法&#xff1a;Q L 功能&#xff1a;查詢當前數列中末尾L個數中的最大的數&#xff0c;并輸出這個數的值。限制&#xff1a;L不超過當前數列的長度。 2、 插入操作。語法&…

javaScript轉換日期合格式

javascript如何將時間日期轉換為Date對象:有時候需要講一個字符串型的時間日期轉換為Date時間對象&#xff0c;下面就通過一個簡單的實例提供一種解決方案&#xff0c;當然也是一種思路&#xff0c;可以進行一定的變通&#xff0c;以達到舉一反三的效果。例如這里有一個時間日期…

8086減法指令SUB

減法指令SUB(SUBtraction) SUB OPRD1,OPRD2 ; OPRD1<-- OPRD1-OPRD2 都影響FLAG標志寄存器,同樣的包含兩種含義(有符號減法和無符號減法)

奇怪吸引子---Dadras

奇怪吸引子是混沌學的重要組成理論&#xff0c;用于演化過程的終極狀態&#xff0c;具有如下特征&#xff1a;終極性、穩定性、吸引性。吸引子是一個數學概念&#xff0c;描寫運動的收斂類型。它是指這樣的一個集合&#xff0c;當時間趨于無窮大時&#xff0c;在任何一個有界集…

8086 INC, DEC

INC OPRD ;OPRD<--OPRD1 ;自加1指令code segmentmov ax,0inc ax ;ax<--ax1 ,ax1inc ax ;ax<--ax1 ,ax2code endsDEC OPRD ;OPRD<--OPRD-1 ;自減1指令code segmentmov ax,5dec ax ;ax<--ax-1 ,ax4 code ends

iPhone UITableViewCell如何滾動到視圖頂端。

如何讓UITableViewCell滾動到視圖頂端。 - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated;- (void)scrollToNearestSelectedRowAtScrollPosition:(UITableViewScrollPosition)s…

app 一些常用的

發短信 &#xff1a;sms:10086 打電話&#xff1a;tel:10086 1、-webkit-tap-highlight-color:rgba(255,255,255,0)可以同時屏蔽ios和android下點擊元素時出現的陰影。備注&#xff1a;transparent的屬性值在android下無效。 2、-webkit-appearance:none可以同時屏蔽輸入框怪異…

8086乘法指令MUL,IMUL

對于加減指令來說CPU對有符號加減和無符號加減一視同仁,根據我們需要把它作為有符號的結果還是無符號的結果,但是乘除法指令區分有符號乘除和無符號乘除指令 無符號數乘法指令MUL(MULtiply) MUL OPRD(OPRD可以用除立即數以外的任何尋址方式)OPRD是八位一個乘數默認在AL中 則&am…

hdu 4857 逃生 拓撲排序

逃生題目連接&#xff1a; http://acm.hdu.edu.cn/showproblem.php?pid4857 Description 糟糕的事情發生啦&#xff0c;現在大家都忙著逃命。但是逃命的通道很窄&#xff0c;大家只能排成一行。 現在有n個人&#xff0c;從1標號到n。同時有一些奇怪的約束條件&#xff0c;每個…

指針數組,數組指針,指針函數,函數指針(轉)

int *p[4]; //指針數組。 是個有4個元素的數組&#xff0c; 每個元素的是指向整型的指針。(數組的每個元素都是指針)int (*p)[4]; //數組指針。 它是一個指針&#xff0c;指向有4個整型元素的數組。 (一個指針指向有4個整型元素的數組)int *…

8086除法指令DIV,IDIV

無符號除法指令DIV(DIVision) DIV OPRD ;除數OPRD決定是8位除法還是16位除法;OPRD8位,則被除數默認在AX中,AX除以OPRD的商保存在AL中,余數保存在AH中;OPRD16位,則被除數默認在DX與AX中,結果的商保存在AX中,余數保存到DX中assume cs:code data segmentdb 2,4 data ends code se…