zoukankan      html  css  js  c++  java
  • Javasrcipt中从一个url或者从一个字符串中获取参数值得方法

    从url中获取参数值是che程序开发过程中的常用需求,偶然得闲,便抽空研究了一下javasrcipt下,获取参数的办法(JAVA中也类似)。

    首先看url的规范:

    URL组成:
    protocol :// hostname[:port] / path / [;parameters][?query]#fragment
    协议://主机名[:端口]/ 路径/[:参数] [?查询]#Fragment

    一个规范的url参数总是在【?query】部分,以 “变量名=值”这样的形式存在;

    这样就给我们取值提供了一个思路:

    第一种方法:利用正则表达式,从url中获取我们需要的对应的参数的值

     

      

     1 function getUrlPramByName(name){
     2      var url = window.location.search;  //获取url中?之后的内容
     3      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); 
     4      if(url){
     5           var r = url.substr(1).match(reg); 
     6 
     7           if (r != null) {
     8                  return decodeURI(r[2]); 
     9           }else{
    10                  return null; 
    11           }
    12      };  
    13 };

    可以自己在浏览器控制台执行下,这种方法只能单独使用,获取自己需要的那个参数值得变量

    第二种方法: 利用字符串操作将所需要的值全部提出来

    function getAllUrlPram(){
        var url = window.location.search;   //获取url中?后面的内容
    
        if(url  && url.indexOf("?")!= -1){
           url = url.substr(1);   //去掉前面的?
    
           var arr = url.split("&");  //将字符串以&为分隔符转化为数组
    
           var obj = {};  //定义一个空对象
    
           for(var i=0;i<arr.length;i++){
               var str0 = arr[i].split("=")[0],      //将获得数组中的每一个元素字符串转换成用"="分割的数组,数组第一个元素即为key
                     str1 = arr[i].split("=")[1];      //将获得数组中的每一个元素字符串转换成用"="分割的数组,数组第一个元素即为value
               obj[str0] = decodeURI(str1);     //由于url中使用的是转义后的字符,因此必须使用decodeURI进行解码
           }
               
           return obj;
        }else {
           return null;
        }
    }

    这样我们可以定义一个在String原型链上的通用方法了:

    String.prototype.getUrlParms = function(){
          var index = this.indexOf("?");
           if(index !=-1){
                var str = this.substr(index+1);
                var arr = str.split("&");  //将字符串以&为分隔符转化为数组
                var obj = {};  //定义一个空对象
               for(var i=0;i<arr.length;i++){
                   var str0 = arr[i].split("=")[0],      //将获得数组中的每一个元素字符串转换成用"="分割的数组,数组第一个元素即为key
                         str1 = arr[i].split("=")[1];      //将获得数组中的每一个元素字符串转换成用"="分割的数组,数组第一个元素即为value
                   obj[str0] = decodeURI(str1);     //由于url中使用的是转义后的字符,因此必须使用decodeURI进行解码
               }       
               return obj;
            }else{
               return;
            }
    }


    最终对字符串执行getUrlParms()方法后,就会得到一个包含所有需要的参数和参数对应的值得对象了;

  • 相关阅读:
    随笔
    第一次随笔
    团队战day02-接口
    团队战day01-初步搭建UI
    团队战start-确定项目以及介绍
    团队—易软
    找回感觉的练习
    第五次作业-团队作业-团队组建
    第四次博客作业-结对项目
    java第九次作业
  • 原文地址:https://www.cnblogs.com/liquanjiang/p/8642356.html
Copyright © 2011-2022 走看看