在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 " name:" + 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”