第一種方式:
<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;
}
}