第一种方式:
<script type="text/javascript">
function get(){
var privailegeIds = ["1-1","1-3","1-4"];
$.ajax({
url:" ",
type: "POST",
data:{"peopleId":2,"privailegeIds":privailegeIds},
success:function(result){
alert(JSON.stringify(result));
}});
}
</script>
@RequestMapping(value = { "" })
@ResponseBody
public DtoResult<Integer> updatePeoplePrivilege(Integer peopleId,@RequestParam(value = "privailegeIds[]") String[] privailegeIds) {
DtoResult<Integer> result = null;
returnresult;
}
利用 @RequestParam(value = "privailegeIds[]") 来接收
第二种方式:
<script type="text/javascript">
function get(){
var privailegeIds = ["1-1","1-3","1-4"];
$.ajax({
url:" ",
type: "POST",
traditional :true,
data:{"peopleId":2,"privailegeIds":privailegeIds},
success:function(result){
alert(JSON.stringify(result));
}});
}
</script>
traditional默认值是false,此处设置 traditional为true,发送数组。
@RequestMapping(value = { "" })
@ResponseBody
public DtoResult<Integer> updatePeoplePrivilege(Integer peopleId, String[] privailegeIds) {
DtoResult<Integer> result = null;
returnresult;
}
接收对象数组
参考文档:https://blog.csdn.net/alan_alei/article/details/73361104
只接收复杂的对象数组:
这里用到解析json的形式接收对象数组,为什么不直接像上面一样直接接收对象数组,因为spring接收的数组好像只能是基本类型,像这种对象类型的接受不成功,报以下错误:
Failed to convert value of type [java.lang.String[]] to required type [com.nv.common.model.AnswerInfo[]];
前端代码:
<script type="text/javascript">
function go() {
var answerInfos = [ {
"answerContent" : "是正确的",
"answerTrue" : "Y",
"answerComment" : "测试啊"
},
{
"answerContent" : "是错误的",
"answerTrue" : "N",
"answerComment" : "测试啊"
} ];
$.ajax({
url : "/droneSchool/exercises/insertExercisesInfo",
type : "POST",
contentType: 'application/json',
data:JSON.stringify(answerInfos),
success : function(result) {
}
});
}
</script>
这里注意:data后面传递的数据是:data:JSON.stringify(answerInfos),不能是:data:{"answerInfos":JSON.stringify(answerInfos)},
Controller代码:
@Controller
@RequestMapping(value = { "/exercises" })
public class ExercisesInfoController {
@RequestMapping(value={"/insertExercisesInfo"})
@ResponseBody
public DtoResult<Integer> insertExercisesInfo(@RequestBody AnswerInfo[] answerInfos) {
return null;
}
}
接收对象数组和其他参数
第一种方式:将多个参数封装到一个对象里进行接收:
前端代码:
<script type="text/javascript">
function go() {
var exercisesInfo = {
sectionId : "1",
exerciseContent : "是否正确?",
exerciseComment : "测试"
};
var answerInfos = [ {
"answerContent" : "是正确的",
"answerTrue" : "Y",
"answerComment" : "测试啊"
},
{
"answerContent" : "是错误的",
"answerTrue" : "N",
"answerComment" : "测试啊"
} ];
var exercisesAnswerDto={
"answerInfos":answerInfos,
"exercisesInfo":exercisesInfo
};
console.log(JSON.stringify(answerInfos));
$.ajax({
url : "/droneSchool/exercises/insertExercisesInfo",
type : "POST",
traditional :true,
contentType: 'application/json',
data:JSON.stringify(exercisesAnswerDto),
success : function(result) {
}
});
}
</script>
封装类:
public class ExercisesAnswerDto {
/**习题**/
private ExercisesInfo exercisesInfo;
/**答案列表**/
private List<AnswerInfo> answerInfos;
Controller代码:
@Controller
@RequestMapping(value = { "/exercises" })
public class ExercisesInfoController {
@RequestMapping(value={"/insertExercisesInfo"})
@ResponseBody
public DtoResult<Integer> insertExercisesInfo(@RequestBody ExercisesAnswerDto exercisesAnswerDto) {
return null;
}
}
第二种方式:将多个参数以字符串形式接收:
前端代码:
<script type="text/javascript">
function go() {
var exercisesInfo = {
sectionId : "1",
exerciseContent : "是否正确?",
exerciseComment : "测试"
};
var answerInfos = [ {
"answerContent" : "是正确的",
"answerTrue" : "Y",
"answerComment" : "测试啊"
},
{
"answerContent" : "是错误的",
"answerTrue" : "N",
"answerComment" : "测试啊"
} ];
$.ajax({
url : "/droneSchool/exercises/insertExercisesInfo",
type : "POST",
data : {
answerInfos : JSON.stringify(answerInfos),
exercisesInfo : JSON.stringify(exercisesInfo)
},
success : function(result) {
}
});
}
</script>
Controller:
@Controller
@RequestMapping(value = { "/exercises" })
public class ExercisesInfoController {
@RequestMapping(value={"/insertExercisesInfo"})
@ResponseBody
public DtoResult<Integer> insertExercisesInfo(String answerInfos,String exercisesInfo) {
return null;
}
}