今天給大家分享一下ajax同時傳map和list到java後端,後端接收的方法。
本質上還是把map和list拼接成一個json字符串。
1.首先在js裏創建一個map 一個list,然後給他們賦值
var list= new Array();
var map = new Map();
2.接下來把list和map轉換成json格式,list可以直接用JSON.stringify去轉
var listJson = JSON.stringify(list);
var mapJson = _mapToJson(map);
function _strMapToObj(strMap){
let obj= Object.create(null);
for (let[k,v] of strMap) {
obj[k] = v;
}
return obj;
}
function _mapToJson(map) {
return JSON.stringify(this._strMapToObj(map));
}
3.拼接起來,放到ajax的data裏
var map1 = '{"key1":' + mapJson + ',"value1":'+listJson+' }';
$.ajax({
type: 'PUT',
url: 你的url,
data: map1,
dataType: 'json',
contentType: 'application/json',
4.ajax裏的data用@RequestBody註解來接收,因爲只有一對key和value,所以就直接通過key獲取了value,獲取出來是String類型的,直接強轉就可以了,現在的map和list就是你需要的結果,這樣就結束了。
@PutMapping("/{id}")
public ResponseResult changeStatus(@RequestBody Map map1, @PathVariable("id") String id) {
Map<String,String> map = (Map<String, String>) map1.get("key1");
List<String> list= (List<String>) map1.get("value1");
}