技术CTO-关注编程入门知识,提供编程入门教程

您的位置: 首页 > 前端开发 > javascript > 正文

JS如何获取到超链接中的参数?有多个。

来源: 技术CTO 阅读:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23sad23sdw4345a33b4&redirect_uri=?uid=1&hid=2&mid=3&response_type=code&scope=smsapi_baser&state=aladdin#wechat_redirvnt
链接如上,想获取到uid、hid和mid,在百度中找到如下方法


var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        var r = window.location.search.substr(1).match(reg); //获取url中"?"符后的字符串并正则匹配
        var context = "";
        if (r != null)
            context = r[2];
        reg = null;
        r = null;
        return context == null || context == "" || context == "undefined" ? "" : context;

但是这种方法只能获取?问号后面的第一个 uid 后面的hid和mid都为空,如何获取到三个参数的值呢?
引用 1 楼 u013116426 的回复:

?问号后面的第一个uid可以获取到,但后&后面的hid和mid是获取不到的。。
代码是获取单个参数的,不能一次返回多个,你要获取哪个参数就调用一次函数不就行了


    function getParam(name,s) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        var r = (window.location.search.substr(1) || s).match(reg); //获取url中"?"符后的字符串并正则匹配
        var context = "";
        if (r != null)
            context = r[2];
        reg = null;
        r = null;
        return context == null || context == "" || context == "undefined" ? "" : context;
    }
    var s = 'uid=1&hid=2&mid=3&response_type=code&scope=smsapi_baser&state=aladdin#wechat_redirvnt';//测试用的
    var uid = getParam('uid', s); alert('uid=' + uid)
    var hid = getParam('hid', s); alert('hid=' + hid)
    var response_type = getParam('response_type', s); alert('response_type=' + response_type)
引用 2 楼 qq_27246087 的回复:
Quote: 引用 1 楼 u013116426 的回复:


?问号后面的第一个uid可以获取到,但后&后面的hid和mid是获取不到的。。

  alert(getQueryString("uid"));
  alert(getQueryString("hid"));
  alert(getQueryString("mid"));
都可以取到的,只是这个没办法一次全部取到
function getUrlParam(url,key){  
    url = url || location.search;  
    var arr = [],obj = {};  
    if(key){  
        url.replace(new RegExp("[&?]"+ key + "=([^&#]*)","ig"), function(a,b) {  
            arr.push(b);
        });
      return arr.join(",");
    }else{  
        url.replace(/[?&]([^&#]+)=([^&#]*)/g, function(a,b,c){  
            obj[b]=c;
        });
        return obj;  
    }  
}  
var url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23sad23sdw4345a33b4&redirect_uri=?uid=1&hid=2&mid=3&response_type=code&scope=smsapi_baser&state=aladdin#wechat_redirvnt"

getUrlParam(url);//所有
getUrlParam(url,"uid");//指定键名

^_^ 如果您热爱技术、热爱编程,想与更多的朋友一起交流学习,欢迎加入本站官方QQ群:345733473 ^_^