Ajax前後端傳值(以下內容有些說法可能不是很準確,但值能夠準確接收,僅作為筆記而已)
阿新 • • 發佈:2018-12-14
傳一個或多個值:
前端:`
/** * @type {{num: number}} */ var object1 = { "num":1, “name”:“張” } $.ajax({ type:"post", url:"/user/test", data:object1, sync:true, success:function(re){ //用的JSONObject,傳過來的是物件,以{}來表示 if(re!="{}") { alert(re) } } })
後端接收
@RequestMapping("/user") public class UserController { @Autowired private UserServiceImpl usi; @RequestMapping("/test") //形參如果名字與前臺封裝的鍵對應,則不需要寫value值,否則必須寫value,即以下兩種方式都可獲取值 /* public String test(@RequestParam (value = "num")String num1,@RequestParam String(value = "name") name1){*/ public String test(@RequestParam String num,@RequestParam String name){ System.out.println(num); System.out.println(name); return "ok"; }
傳陣列
前臺:
var arr = new Array() arr.push(1) arr.push(2) arr.push(3) $.ajax({ type:"post", url:"/user/test1", //封裝成json型別 data:{"arr":arr}, //這個必須為true,預設是false,會深度序列化,servlet解析不了 traditional:true, sync:true, success:function(re){ //用的JSONObject,傳過來的是物件,以{}來表示 if(re!="{}") { alert(re) } } }) })
後臺
//引數接收類似於傳單個值,只是接收型別變成了String[]
public String test1(@RequestParam(value = "arr") String []arr){
List<Integer> list = new ArrayList<>();
for(int i=0;i<arr.length;i++){
list.add(Integer.valueOf(arr[i]));
}
for (Integer integer : list) {
System.out.println(integer);
}
return "ok";
}