微信小程序掃普通鏈接獲取url
參數
ps: 這裏的方法跟
打開頁面路徑中的參數
不一樣哈.
歡迎各位大神前來指點
方法一:
可獲取
多個
參數
/**
* params1: url
* params2: 要獲取參數
*/
const getQueryString = (url, name) => {
var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')
var r = url.substr(1).match(reg)
if (r != null) {
// console.log("r = " + r)
// console.log("r[2] = " + r[2])
return r[2]
}
return null;
}
方法二:
獲取
一個
參數, url中有多個參數,只會返回第一個參數值
/**
* params1: url
* params2: 要獲取參數
*/
getQueryVariable: function (query, variable) {
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair.length == 2) {
return pair[1];
}
if (pair[0] == variable) { return pair[1]; }
}
return (false);
},
方法三:
和
方法一
差不多, 在js
中使用window.location.search
獲取頁面url
地址
getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
}
//demo
//url地址爲:http://www.xxxx.com?mobile=13899997777&nickname=小不點
let mobile = getQueryString('mobile');
使用
-
這裏以
小程序
調用爲例, 掃普通二維碼進入小程序,獲取參數 -
二維碼鏈接內容會以參數
q
的形式帶給頁面,在onLoad事件中提取q
參數並自行decodeURIComponent
一次,即可獲取原二維碼的完整內容。
/**
* 生命週期函數--監聽頁面加載
*/
onLoad: function(options) {
that = this;
//掃碼截取參數
if (options.q !== undefined) {
let q = decodeURIComponent(options.q);
// q 是解碼後的完整url 【https://js.test.com/index?combo_code=10000006】
let comboCodeParams = utils.getQueryVariable(q, 'combo_code');
that.setData({
comboCode: comboCodeParams
})
}
//方法二使用及結果【獲取多個參數】:
var q1 = 'https://js.test.com/index?id=159&type=2&testA=123'
console.log("params1---->", utils.getQueryString(q1, 'id')); //159
console.log("params2---->", utils.getQueryString(q1, 'type')); //2
console.log("params3---->", utils.getQueryString(q1, 'testA')); //123
//方法一結果:【不利於獲取多個參數】
console.log("params1---->", utils.getQueryVariable(q1, 'id')); //159
console.log("params2---->", utils.getQueryVariable(q1, 'type')); //159
console.log("params3---->", utils.getQueryVariable(q1, 'testA')); //159
}
微信小程序獲取頁面路徑
參數
- 頁面加載時觸發。一個頁面只會調用一次,可以在
onLoad
的參數中獲取打開當前頁面路徑中的參數。
// demo
wx.navigateTo({
url: '../user/user?userId='+ this.data.id,
});
<navigator url="../user/user?userId={{item.id}}">
</navigator>
// 在user頁面中獲取路徑參數
onLoad: function (options) {
this.setData({
userId: options.userId
})
},
js中獲取url參數
其中的一種方式demo
function GetQueryString(name) {
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null)return unescape(r[2]); return null;
}
// 調用方法
alert(GetQueryString("id"));
alert(GetQueryString("type"));
alert(GetQueryString("testA"));