今天碰到要在一个页面获取另外一个页面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>
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;
}
注释:ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。