URL參數(shù)值獲取getQueryString

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

    • 其中"(^|&)" + name + "=([^&]*)(&|$)"
      含義:取以name開頭或者以&開頭以&或者以$結(jié)尾的字符串
      (^|&):匹配字符串開頭或者&字符,如果其后還有正則,那么必須出現(xiàn)在字符串開始或&字符之后
      ([^&]*)[^&]匹配除了&之外的任意字符, ([^&]*)匹配除了&之外的任意字符 0或多次
      (&|$):匹配以&或者以$結(jié)尾的字符串
      i:表示匹配時不區(qū)分大小寫
    • window.location.search.substr(1).match(reg)的意思是找出?之后匹配reg的字符串
    • substr(start,end):截取字符串
    • match() 方法可在字符串內(nèi)檢索指定的值,或找到一個或多個正則表達式的匹配,返回一個數(shù)組
    • 該方法類似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
    • decodeURIComponent(r[2])的意思是對所選的字符串進行解碼
  • 獲取
    var value= getQueryString("key");

  • url相關參數(shù)
    location對象 含有當前URL的信息. 屬性 href 整個URL字符串.
    protocol 含有URL第一部分的字符串,如http:
    host 包含有URL中主機名:端口號部分的字符串.如//www.cenpok.net/server/
    hostname 包含URL中主機名的字符串.如http://www.cenpok.net ;
    port 包含URL中可能存在的端口號字符串.
    pathname URL中"/"以后的部分.如~list/index.html
    hash "#"號(CGI參數(shù))之后的字符串.
    search "?"號(CGI參數(shù))之后的字符串.

  • 遇到問題
    少數(shù)情況,出現(xiàn),打開網(wǎng)頁,url將&解析成&,造成該方法無法獲取到url攜帶的參數(shù)
    &是html中的或者url地址欄中的轉(zhuǎn)義字符,就是代表&的意思
    即本來url為http://www.itdecent.cn/p/e61315e04444?a=1&b=2&c=3&d=4
    被解析為http://www.itdecent.cn/p/e61315e04444?a=1&b=2&c=3&d=4

  • 解決辦法
    截取掉amp;,再使用該方法

function getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    /* 添加了中間這段代碼*/
    if (window.location.search.indexOf("amp;")) {
        var reg01 = new RegExp("amp;", "g");
        var url = window.location.search.replace(reg01,"");
        r = url.substr(1).match(reg);
    }
    /*添加了中間這段代碼*/
    if (r != null) {
        return decodeURI(r[2]);
    } else {
        return null;
    }
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容