js获取url中的参数传值

之前页面只需要传一个值,因此用的是比较简单的方法:获取页面url后以等号进行字符串分割,代码如下:

1
2
var url = window.location.search;
var loc = url.substring(url.lastIndexOf("=") + 1, url.length);

但是这样只能获取最后一个等号所带的值,大多情况无法满足需要。因此需要一个能够获取全部参数部分(“?”之后的部分)

1
2
3
4
5
6
7
8
9
10
11
12
function GetRequest() {
var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();//新建对象
if (url.indexOf("?") != -1) { //排除没有参数的情况
var str = url.substr(1);//抽取从第二个字符到结尾的字符子串
strs = str.split("&");//将str以&作为分隔符分成多个部分,以数组形式存在strs里
for (var i = 0; i < strs.length; i++) {//遍历strs数组
theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);//使theRsquest[key] = value
}
}
return theRequest;
}

使用方法:

GetRequest()[key]

例如 访问test.html?id=9&type=cat

在test.html里

GetRequest()["id"] //9

GetRequest()["type"] //cat