入我的主页,查看更多JS的分享!
我的代码有多短,本文章就有多短!(?_?)
先获取浏览器参数的字符串,判断并转为对象,如果没有指定参数名,直接返回该对象。
需要说的话都在注释里了,先贴上代码(好像明白了程序员为啥话不多)
/**
* 获取:当前链接的参数
* 若不指定参数,则以对象的形式返回全部参数
* 若指定参数名,则只返回对应的值
* 处理:中文解码
* 测试:"?id=123&name=哈哈哈"
* 结果:{id: "123", name: "哈哈哈"}
*/
var getLocationParam=(name)=>{
let param=window.location.search.substr(1);
if (!param) {
return undefined;
} else {
let pArr=param.split("&");
let res={};
for (let i=0; i < pArr.length; i++) {
let item=pArr[i].split("=");
res[item[0]]=item[1] ? decodeURI(item[1]) : null;
}
return !name ? res: res[name];
}
};
如果参数有中文,直接用"decodeURI()",而"unescape()"并不适用。(测试了QQBrowser、Chrome、IE9-11)
运行:
console.log(getLocationParam("id"));
//输出:123
console.log(getLocationParam("name"));
//输出:哈哈哈
console.log(getLocationParam("due"));
//输出:undefined
console.log(getLocationParam());
//输出:{id: "123", name: "哈哈哈"}
网上有一段代码,是用正则来获取指定的参数,虽然只能获取指定的参数。嘛,直接贴上代码看看吧:
取url参数有两种情况:
应用场景一:内部页面之间互相传值
假如要从A页面跳转到B页面,
this.$router.push({path:"/B",query:{
Id : this.tId ,
...
}})
进入B页面之后,
this.Id=this.$route.query.Id;
就能将A页面的id传入B页面,进行参数获取。
应用场景二:外系统跳转Vue项目时自带参数
例如: https://shq5785.blog.csdn.net/list?Id=sunhuaqiang1#/
外系统跳转进入的url会在Vue项目编译后自动添加 “#/”后缀 ,其中带的参数在 “#/”之前,所以应用场景一中的方法无法获取,只能应用JS的方法来获取,解析功能函数如下所示:
getURLParams(url) {
let param=url.split('#')[0]; //获取#/之前的字符串
var paramContent=param.split('?')[1]; //获取?之后的参数字符串
var paramsArray=paramContent.split('&'); //参数字符串分割为数组
var paramResult={};
//遍历数组,拿到json对象
paramsArray.forEach((item, index, paramsArray)=> {
paramResult[paramsArray[index].split('=')[0]]=paramsArray[index].split('=')[1];
})
return paramResult;
}
调用方式如下:
this.getURLParams(window.location.href)
vue-router获取url传参 | 《Linux就该这么学》 (linuxprobe.com)
ue单页面开发中路由传参大家不陌生吧!但是有时候会出现跳转过后带过的参数页面刷新五数据。
今天我这说的是路由传参是 对象。
路由传值parmas对象
courseData参数名后面显示的值为乱码
传到页面能获取值 但是刷新后页面无法看到数据 ,这里其实是因为传过的对象必须是要对象字符串才不会出现这个问题。
JSON.stringify把对象转换成字符串或者也可以拼接成字符串
跳转该组件获取数据
把字符串对象解析然后获取数据
url里面的参数
这样你跳转的页面刷新 数据就一直存在了。
当然这里还可以用 HTML5本地储存数据sessionStorage,一样可以解决这个问题。
*请认真填写需求信息,我们会在24小时内与您取得联系。