Javascript擷取url參數值方法總結

來源:互聯網
上載者:User

執行個體1

 代碼如下 複製代碼


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


調用方法

alert(GetQueryString("參數名1"));
alert(GetQueryString("參數名2"));
alert(GetQueryString("參數名3"));

如:getUrlParam("id")。
這個方法通過構造一個Regex來匹配到需要查詢的url參數,location.search是擷取到url中的查詢字串部分。這個方法的優點是簡潔,缺點是每次都需要對字串進行分析尋找,多次查詢同一個參數效率低下,所以有了下面這個方法。

擷取url參考值方法二

 代碼如下 複製代碼


<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>

利用閉包和Regex實現

 代碼如下 複製代碼

var getUrlParam = function(){
  var args = null;
  return function(name){
    if(args === null){
      if(location.search == "") return "";
      var queryArray = location.search.substring(1).split("&");
      var i;
      args = {};
      for(i = 0;i < queryArray.length;i++){
        var match = queryArray[i].match(/([^=]+)=([^=]+)/);
        if(match !== null){
          args[match[1]] = match[2];
        }
      }
    }
    return args[name] == undefined ? "" : args[name];
  };
}();

這個方法利用了js的函數閉包,將url參數都儲存在一個匿名函數裡面的args變數中,而且除了通過getUrlParam外,任何方法都訪問不到該變數。而且只有第一次擷取url參數的時候才會分析url,以後就直接從變數args中讀取。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.