前后端的参数传递以及如何去获取路径中的参数问题
前后端传参使用ajax请求一个路径axios.post(url,this.hero4Add).then(function (response) {vue.list(1);vue.hero4Add={id:0,name:'',hp:'0'};});其中post中的url是请求路径,this.hero4Add是传给后端的数据,response是后端返回的数据比如//前端发送ajax请求var url=
·
前后端传参
- 使用ajax请求一个路径
axios.post(url,this.hero4Add).then(function (response) {
vue.list(1);
vue.hero4Add={id:0,name:'',hp:'0'};
});
其中post中的url是请求路径,this.hero4Add是传给后端的数据,response是后端返回的数据比如
//前端发送ajax请求
var url="loginConfirm/"+id;
$.post(url).then(function (response) {
console.log("response:"+response);
//123456
var pw=response;
if (passwd==pw){
location.href="listHero?id="+id+"&password="+pw;
}else {
vue.passwd=true;
}
})
后端接收id属性记住一定要使用@PathVariable(value = “id”)绑定属性即路径中的{id}
@RequestMapping("/loginConfirm/{id}")
@ResponseBody
public String LoginConfirm(@PathVariable(value = "id")int id,HttpServletRequest request)throws Exception{
System.out.println("LoginConfirm");
User user=userService.get(id);
return user.getPassword();
}
后端返回一个user.getPassword(),前端function中response就是user.getPassword()即123456
- 如果后端想获取路径中携带的参数使用
String str=request.getQueryString();
System.out.println("getQueryString:"+str);
比如路径是location.href="listHero?id="+id+"&password="+pw;
即路径是 listHero?id=123456&password=123456
str获取到的就是id=123456&password=123456
不过把密码放进路径不太合适,通过这样去判断是否登录也不合适。
- 如果前端想要去获取路径中携带过来的参数那就使用正则表达式或者去慢慢去分割了
分割法(理解)
function getUrlPages(name) {
var url=location.search;
//url就是: ?id=12345&passwd=12345
console.log(url);
var theRequest=new Object();
if (url.indexOf("?")!=-1){
//把?分割出去
var str=url.substr(1);
//通过&把一对对的键值对分割
//分割后为:id=12345 passwd=12345
var strs=str.split("&");
console.log(strs);
//循环找是否有与要找的name相同的参数
for (let i = 0; i < strs.length; i++) {
//把数组中每一个用=分开
var st=strs[i].split("=");
console.log(st);
//找第一个就行
if (name==st[0]){
console.log(st[1]);
return st[1];
}
}
}
return ;
};
正则表达式
function getUrlPages(name) {
var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)");
var r=window.location.search.substr(1).match(reg);
if (r!=null){
return unescape(r[2]);
}
return null;
}
更多推荐
已为社区贡献1条内容
所有评论(0)