这是地址栏 http://127.1.1.1/h5/index.html?login_name=abc&mx_sso_token=123456#/
需要截取login_name和mx_sso_token当做参数发送请求
一, onLoad中调用方法 (其实onLoad里的option就是地址栏的参数信息, 打印出来看下有没有 , 有的话就能直接获取到了)
onLoad(option) {
//打印参数
console.log(option)
// 获取用户信息
this.getUserInfo();
},
一 , data中定义数据
data() {
return {
// 地址栏参数
username: '',
ssoToken: ''
};
},
二 , methods中写方法
//获取地址栏的用户信息
async getUserInfo() {
let href = window.location.href,
params = href.match(/\?.*?#/g);
if (params) {
params = params[0].replace(/#/g, ""); // 获取到路由指定参数
href = href.replace(params, "");
window.history.replaceState(null, null, href + params);
this.username = this.getQueryString(params, "login_name");
this.ssoToken = this.getQueryString(params, "mx_sso_token");
} else {
this.username = this.$route.query.login_name;
this.ssoToken = this.$route.query.mx_sso_token;
}
const param = {
username: this.username,
ssoToken: this.ssoToken
};
// 发请求 传参
await uni.$http.post('/login', param);
},
// 获取地址栏参数的函数
getQueryString(params, name) {
//构造一个含有目标参数的正则表达式对象
let reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
let r = params.match(reg); //匹配目标参数
if (r != null) return decodeURIComponent(r[2]);
return '';
},