zoukankan      html  css  js  c++  java
  • js获取url参数值

    今天碰到要在一个页面获取另外一个页面url传过来的参数,一开始很本能的想到了用 split("?")这样一步步的分解出需要的参数。

    后来想了一下,肯定会有更加简单的方法的!所以在网上找到了两个很又简单实用的方法,mark下

    方法一:正则分析法

    function getQueryString(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)""i");
        var r = window.location.search.substr(1).match(reg);
        if ( r != null ){
           return unescape(r[2]);
        }else{
           return null;
        
     }

     //但是在使用的过程中,发现其在获取中文参数的时候,获取到的值是乱码的

     //解决办法:将解码方式unscape换为decodeURI
     //原因:浏览器会将url中的中文参数进行encodeURI编码,所以要通过js使用decodeURI进行解码

    这样调用:

    alert(GetQueryString("参数名1"));
    alert(GetQueryString("参数名2"));
    alert(GetQueryString("参数名3"));

    方法二:

    <span style="font-size: 16px;"><Script language="javascript">
    
    function GetRequest() {
    
       var url = location.search; //获取url中"?"符后的字串
    
       var theRequest = new Object();
    
       if (url.indexOf("?") != -1) {
    
          var str = url.substr(1);
    
          strs = str.split("&");
    
          for(var i = 0; i < strs.length; i ++) {
    
             theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
    
          }
    
       }
    
       return theRequest;
    
    }
    
    </Script></span>

    这样调用

    <Script language="javascript">
    var Request = new Object();
    Request = GetRequest();
    var 参数1,参数2,参数3,参数N;
    参数1 = Request['参数1'];参数2 = Request['参数2'];参数3 = Request['参数3'];参数N = Request['参数N'];
    </Script>

    方法三:

    /** 
     * 获取指定的URL参数值 
     * URL:http://www.quwan.com/index?name=tyler 
     * 参数:paramName URL参数 
     * 调用方法:getParam("name") 
     * 返回值:tyler 
     */ 
    function getParam(paramName) { 
        paramValue = "", isFound = !1; 
        if (this.location.search.indexOf("?") == 0 && this.location.search.indexOf("=") > 1) { 
            arrSource = unescape(this.location.search).substring(1, this.location.search.length).split("&"), i = 0; 
            while (i < arrSource.length && !isFound) arrSource[i].indexOf("=") > 0 && arrSource[i].split("=")[0].toLowerCase() == paramName.toLowerCase() && (paramValue = arrSource[i].split("=")[1], isFound = !0), i++ 
        } 
        return paramValue == "" && (paramValue = null), paramValue 
    } 

    方法四:

    function getUrlVars(){ 
      var vars = [], hash; 
      var hashes = window.location.href.slice(window.location.href.indexOf('?')+1).split('&'); 
      for(var i = 0; i < hashes.length; i++) { 
        hash = hashes[i].split('='); 
        vars.push(hash[0]); 
        vars[hash[0]] = hash[1]; 
      } 
      return vars; 
    } 

    调用方法

     var params=getUrlVars();
     var value= params[params[0]] ;
     

    其他参数获取介绍: 
    //设置或获取对象指定的文件名或路径。
    alert(window.location.pathname);

    //设置或获取整个 URL 为字符串。
    alert(window.location.href);

    //设置或获取与 URL 关联的端口号码。
    alert(window.location.port);

    //设置或获取 URL 的协议部分。
    alert(window.location.protocol);

    //设置或获取 href 属性中在井号“#”后面的分段。
    alert(window.location.hash);

    //设置或获取 location 或 URL 的 hostname 和 port 号码。
    alert(window.location.host);

    //设置或获取 href 属性中跟在问号后面的部分。
    alert(window.location.search);

  • 相关阅读:
    GZDBHelper C#.NET开源的数据库访问组件
    判断页面是否是静态页面
    Web应用程序dll获取当前程序集路径问题
    webAPI 上传文件
    解决.Net Core3.0 修改cshtml代码之后必须重新生成才可以看到效果
    .net core使用LESS
    test
    JS实现线程锁(Promise),NodeJS并发锁处理
    参考护照编码实现算法JS生成带字母有序编码
    centos7防火墙开放端口与关闭防火墙
  • 原文地址:https://www.cnblogs.com/weixing/p/4765675.html
Copyright © 2011-2022 走看看