在Web開發中,我們常常會涉及到需要獲取Get方式URL中的參數鍵值的情況,這里簡單介紹三種方法:
第一種:常用的做法有使用JavaScript獲取location.href后用正則表達式匹配獲取此URL的所有鍵值對;也可以通過以“&”為分隔符進行分隔后存儲在對象中,然后獲取對象中的鍵值對,如下例子:
queryString.js
1 var queryString= { 2 data:{}, 3 initial:function(){ 4 var paramGroup; 5 var tempGroup; 6 var queryStr = new String(window.location.search); 7 queryStr = queryStr.substr(1,queryStr.length);//remove "?" 8 paramGroup = queryStr.split("&"); 9 for(var i=0; i<paramGroup.length; i++){ 10 tempGroup = paramGroup[i].split("="); 11 this.data[tempGroup[0]] = tempGroup[1]; 12 } 13 }, 14 getValue:function(key){ 15 return this.data[key]; 16 } 17 }
queryString.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 5 <title>獲取Get方式URL中的參數鍵值</title> 6 <script type="text/javascript" src="queryString.js"> 7 </script> 8 </head> 9 <body> 10 <div id="divParameter"> 11 </div> 12 <input type="button" id="btnNew" value="打開新窗口" onclick="window.open('queryString.html?id=1001&name='+encodeURI('博客園KenmuHuang'));" /> 13 </body> 14 <script type="text/javascript"> 15 window.onload=function(){ 16 queryString.initial(); 17 document.getElementById("divParameter").innerHTML = "id:" + queryString.getValue("id") + 18 "\r\nname:" + decodeURI(queryString.getValue("name")); 19 }; 20 </script> 21 </html>
第二種:這里比如有個Key參數鍵,需要獲取它對應的值;這時可以使用.NET里的Request.Form["Key"](針對Post)或Request.QueryString["Key"](針對Get),也可以用Request["Key"](Post和Get都可以)
其實.NET還有一種做法,就是獲取到URL地址后轉化為NameValueCollection對象示例,如下例子:
1 using System.Web; 2 using System.Collections.Specialized; 3 4 NameValueCollection collection = HttpUtility.ParseQueryString("?ProjectID=-1&ProID=-1&CurId=503&IsTender=Y&PlanID=-1&hasAccess=True&mode=v"); 5 string hasAccess = collection.Get("hasAccess"); //“True”