今天给大家分享一下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");
}