Ajax json互動和SpringMVC中@RequestBody

來源:互聯網
上載者:User

標籤:資料互動   \n   請求   public   api   upload   分享   屬性   $.ajax   

Ajax json互動和SpringMVC中@RequestBody

標籤:

背景

自己提供出去得介面中參數設定為@RequestBody VipPromotionLog vipPromotionLog為一個對象。但是前端人員得處理方式代碼如下

    var data = {        "userId" : 20142100122,        "userOperationStep" : 2,        "appPlatform": "android",        "app" : 0,        "videoId":123123    };    $.ajax({        url : ‘http://localhost:81/online-2c/api/vippromotion‘,        type : ‘POST‘,        dateType : ‘json‘,        data:data,        success : function(msg){            console.log(msg);        }    })
問題出現

上述情況出現一錯誤

圖一

排查

查看這從請求得類型二

圖二

content-Type為application/x-www-form-urlencoded
而且傳輸過去的類型是一個對象,那麼我們設定的@RequestBody需要的是什麼,難道不是一個對象。這裡我個人的理解為@RequestBody需要傳輸過去的是一個字串並且和其注釋的對象的屬性一一對應。

解決辦法一

有兩種辦法解決 第一不改變後台代碼的情況下解決辦法如下代碼

    var data = {        "userId" : 20142100122,        "userOperationStep" : 2,        "appPlatform": "android",        "app" : 0,        "videoId":123123    };    $.ajax({        url : ‘http://localhost:81/online-2c/api/vippromotion‘,        type : ‘POST‘,        dateType : ‘json‘,        contentType : ‘application/json‘,        data:JSON.stringify(data),        success : function(msg){            console.log(msg);        }    })

application/json 傳輸過去的資料為json對象的字串,data為一個對象,用JSON.stringify轉換成對象字串,其實上面代碼和下面的是一樣的

   var data = ‘{\n‘ +        ‘        "userId" : 20142100122,\n‘ +        ‘        "userOperationStep" : 2,\n‘ +        ‘        "appPlatform": "android",\n‘ +        ‘        "app" : 0,\n‘ +        ‘        "videoId":123123\n‘ +        ‘    }‘;    $.ajax({        url : ‘http://localhost:81/online-2c/api/vippromotion‘,        type : ‘POST‘,        dateType : ‘json‘,        contentType : ‘application/json‘,        data:data,        success : function(msg){            console.log(msg);        }    })
辦法二

修改後台代碼,去除@RequestBody註解。這樣的話你傳輸過去的就是一個對象了,並一一對應,如果沒有的話就為空白。前端js代碼不變。

防止

根據前後天的資料互動類型來進行選擇。

Ajax json互動和SpringMVC中@RequestBody

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.