1.需求如下
1.前端js封装List,通过ajax发起请求,后端通过springboot进行参数的处理
2.js前端数据结构
js使用{}实现 .allScore为某一类元素
var allScoreMap = {};
var allScoreMapSize = 0;//相当于List的size 很重要
$(".allScore").each(function(index,element){
allScoreMap[index]=$(this).text();
allScoreMapSize++;
});
业务截图:
3.源代码
ajax部分代码,关键部分为allScoreMap:allScoreMap, allScoreMapSize:allScoreMapSize,
$.ajax({
type: "POST",
dataType: "json",
url: "/main/mainNoNameSubmit",
data: {
id: id,
uuid: uuid,
yearDetailId: yearDetailId,
allScoreMap:allScoreMap,
allScoreMapSize:allScoreMapSize,
},
async: false,
success: function (data) {
if (data.rtnCode == 200) {
$(location).attr('href', '/over');
} else {
toastr.error(data.msg);
}
}
});
后台获取参数一般写法(错误示范)
这种写法直接会报错,因为没有这个参数allScoreMap
后台只认识allScoreMap[0],浏览器监控
解决方法:
@PostMapping("/main/mainNoNameSubmit")
public @ResponseBody ResponseBase mainNoNameSubmit(HttpServletRequest request, String id, String yearDetailId,
String uuid,Integer allScoreMapSize) {
// 获取所有分数
List<Double> listSorce = new ArrayList<>();
for (int i = 0; i < allScoreMapSize; i++) {
Double scroe = Double.parseDouble(request.getParameter("allScoreMap[" + i + "]"));
listSorce.add(scroe);
}
return setResultFail("测试");
}
调试截图如下: