ajax收参的四种方式
我先把静态页面粘出来
<div> <input type="button" value="第一种 k-v 结构的ajax 传递" id="ajax01"><br> <input type="button" value="第一种 k-v 结构的ajax 传递" id="ajax02"><br> <input type="button" value="第一种 k-v 结构的ajax 传递" id="ajax03"><br> <input type="button" value="第一种 k-v 结构的ajax 传递" id="ajax04"><br> div>
1.ajax的k-v收参数
点击id为“ajax01”的按钮,触发ajax
$(function () {
$("#ajax01").click(function () {
$.ajax({
url:'/ajax/reg',
type:'post',
data:{
'username':"admin",
'password':"123",
'passwordConf':"1234"
} ,
success:function(res){
console.log(res);
},
dataType:'json',
});
});
})
后端 AjaxController 代码:
//第一种 ajax的k-v收参数 @RequestMapping("/reg") @ResponseBody //该注解是返回json数据给前端!!!也叫接口 public Map reg(String username, String password, String passwordConf) { Map map = new HashMap(); //模拟一下业务 //如果两个密码不一致,就提示 if (StringUtils.equals(passwordConf, password)) { map.put("code", 0); map.put("msg", "注测成功"); map.put("data", username); return map; } else { map.put("code", 5001); map.put("msg", "两个密码不一致"); return map; } }
2.ajax的对象收参数
创建 UserInfo 对象
package com.xiexin.bean; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; import java.util.List; @Data public class UserInfo { private String username; private String password; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date userDate; }
前端:
$(function () {
$("#ajax02").click(function () {
var userInfo = {};
userInfo.username = "张三";
userInfo.password = "123";
userInfo.passwordConf = "1234";
userInfo.userDate = "2021-10-10 10:10:03";
$.ajax({
url:'/ajax/reg1',
type:'post',
data:userInfo,
success:function(res){
console.log(res);
},
dataType:'json',
});
});
})
后端:
@ResponseBody @RequestMapping("/reg1") public Map reg1(UserInfo userInfo) { Map map = new HashMap(); map.put("code", 0); map.put("msg", "登录成功"); map.put("data", userInfo); return map; }
3.ajax的接受数组参数
我们在UserInfo中添加一个String类型的数组
package com.xiexin.bean; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; import java.util.List; @Data public class UserInfo { private String username; private String password; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date userDate; private String[] hobby; //爱好 }
前端:
$("#ajax03").click(function () {
var array = new Array();
array.push("吸烟");
array.push("喝酒");
array.push("烫头");
$.ajax({
url: '/ajax/reg2',
type: 'post',
data: {
'hobbyList':array
},
success: function (res) {
console.log(res);
},
dataType: 'json',
});
});
后端代码:
@ResponseBody @RequestMapping("/reg2") //RequestParam 可以解决前后端参数不一致的问题 public Map reg2(@RequestParam("hobbyList[]") ListhobbyList) { Map map = new HashMap(); map.put("code", 0); map.put("msg", "登录成功"); map.put("data", hobbyList); return map; }
这里要注意啦,前端传参数是是 hobbyList[] ,所以我们一般加上 @RequestParam("hobbyList[]") 来解决前后端参数不一致的问题
4.ajax接受复杂类型参数(重点!!!)
在UserInfo中添加对象数组,loverList
package com.xiexin.bean; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; import java.util.List; @Data public class UserInfo { private String username; private String password; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date userDate; private ListloverList; //情人 private String[] hobby; //爱好 }
再创建Lover的JavaBean
package com.xiexin.bean; import lombok.Data; @Data public class Lover { private String name; private int age; }
前端代码:
$("#ajax04").click(function () {
//json 传递值,他应用于复杂点数据传递
//几乎都是json
var userInfo = {
username:"洋洋",
password:"123",
userDate:"2021-10-10",
loverList:[
{
name:"冰冰",
age:40
},
{
name:"帆帆",
age:18
}
],
hobby:[
"吸烟","喝酒","打麻将"
]
}
$.ajax({
url: '/ajax/reg3',
type: 'post',
//把浏览器的文本类型改为 json类型
contentType:"application/json;charset=utf-8",
data: JSON.stringify(userInfo),
success: function (res) {
console.log(res);
},
dataType: 'json',
});
});
后端代码:
@ResponseBody @RequestMapping("/reg3") //RequestBody 接受前端传来的json //RequestParam 可以解决前后端参数不一致的问题 public Map reg2(@RequestBody UserInfo userInfo) { Map map = new HashMap(); map.put("code", 0); map.put("msg", "登录成功"); map.put("data", userInfo); return map; }
重点:
1.@RequestBody:接受前端传来的json
2.@RequestParam:可以解决前后端参数不一致的问题