转自:http://www.cnblogs.com/jiekk/archive/2011/06/28/2092444.html

今天碰到要在一个页面获取另外一个页面url传过来的参数,一开始很本能的想到了用 split("?")这样一步步的分解出需要的参数。

后来想了一下,肯定会有更加简单的方法的!所以在网上找到了两个很又简单实用的方法,mark下

方法一:正则分析法

function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
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"));

方法二:

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

补充:
1.小弟学的不够深入,不知道RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");这个正则表达式的表示什么意思。
答:

RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i")的意思是:
以&开始或直接以name开始
以&结束或直接结束
name的值是由0到多个不是&的字符组成!!
"i"是忽略大小写!

2.我觉得方法二有问题。
如果URL后面参数只有一个比如localhost/index.html?id=1 
if (url.indexOf("?") != -1) 这个就会出问题。
我改了下,代码如下:
function GetRequest() {
    var url = location.search; //获取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        if (str.indexOf("&") != -1) {
            strs = str.split("&");
            for (var i = 0; i < strs.length; i++) {
                theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
            }
        }else {
            theRequest[str.split("=")[0]] = unescape(str.split("=")[1]);
        }
    }
    return theRequest;
}

   
3.我对方法做了一点点的修改,因为我的业务中url中参数的值为一段html代码片段,所以最后返回的值,是这段html片段,因此我修改了,希望有需要的参照:
function getUrlRequest(){
                var url = location.search; //获取url中"?"符后的字串
                var theRequest = new Object();
                if (url.indexOf("?") != -1) {
                    var str = url.substr(1);
                    if (str.indexOf("&") != -1) {
                        strs = str.split("&");
                        for (var i = 0; i < strs.length; i++) {
                            theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
                        }
                    }else {
                        var key = str.substring(0,str.indexOf("="));
                        var value = str.substr(str.indexOf("=")+1);
                        theRequest[key] = decodeURI(value);
                    }
                }
                return theRequest;
        }

本文转载:CSDN博客