js获取url参数值

来源:互联网 发布:网络推广运营公司 编辑:程序博客网 时间:2024/06/16 14:37
转自: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;        }
1 0
原创粉丝点击