截取url地址后面参数方法(小程序二维码跳转参数解析)

139 阅读1分钟

微信扫描小程序二维码后,在页面的onLoad函数的参数options内可以拿到跳转参数scene值,但是需要对scene进行decodeURIComponent操作,方法如下:

方法一:

   扫码二维码地址:
             https://api.test.cn/qrcode/jksi/code?sourceCode=abxd&Name=你我他
 
   //截取url中的参数
      getUrlParams(url) {
        let o = {};    
        if (url.indexOf("?") != -1) {       
        let str = url.substr(url.indexOf("?") + 1).replace(/[#/|/#/]/g, "");       
        // console.log(str);       
        let strs = str.split("&");       
        // console.log(strs);      
        for (let i = 0; i < strs.length; i++) {      
        o[strs[i].split("=")[0]] = decodeURIComponent(strs[i].split("=")[1]);        
         }
        }
        return o;
      },
      
      getDecodeUrlKey(url, key){
        let arr = url.substr(url.indexOf('?')+1).split('&')
        let newObj = arr.reduce((obj, item)=>{
                obj[item.split('=')[0]] = item.split('=')[1]
                return obj
        }, {})
        return newObj[key]
	},
        
     urlTo0bj (url){
        let obj = {};
        let str = url.slice(url.indexOf('?') + 1); 
        let arr = str.split('&');
        for (let j = arr.length, i = 0; i< j; i++) { 
                let arr_temp = arr[i].split('=');
                obj[arr_temp[0]]= arr_temp[1];
                }
        return obj
    },   
 
 
    onLoad (options) {
        // scene需要使用decodeURIComponent才能获取到生成二维码时传入的scene
        let decodeScene = decodeURIComponent(options.q);
        let urlParams = this.getUrlParams(decodeScene)
        let sourceCode= urlParams.sourceCode
        let Name= urlParams.Name
          
  }

方法二:

  页面地址:pages/home/home?courseId=1&lessonId=1
   scene值:courseId=1&lessonId=1
 
   //参数解析
     getQueryValue(query, queryName) {
        const reg = new RegExp("(^|&)" + queryName + "=([^&]*)(&|$)", "i");
        const r = query.match(reg);
        if (r !== null){
          return r[2];
        } else {
          return null;
        }
      }
 
 
    onLoad (options) {
        // scene需要使用decodeURIComponent才能获取到生成二维码时传入的scene
        const decodeScene = decodeURIComponent(options.scene);
        const courseId = getQueryValue(decodeScene, ‘courseId’);
        const lessonId = getQueryValue(decodeScene, ‘lessonId’);
  }