javascript的getquerystring(javascript获取url参数)

最近在开发时需要用到javascript通过url传参,以前一直使用别人写的一个正则来进行判断,由于正则运行效率比较慢,这次重新写了一个javascript的GetQueryString方法,以备后用。

1
2
3
4
5
6
7
8
9
10
11
var Get_QueryString = function(name){
var now_url = document.location.search.slice(1),
q_array = now_url.split('&');
for(var i=0;i<q_array.length;i++){
var v_array = q_array[i].split('=');
if(v_array[0]==name){
return v_array[1];
}
}
return false;
}

上面是对于单个url参数的提取比较方便,但是如果对于多个url参数,用上面的方法可能不能胜任了,需要多次匹配,浪费效率,我们来改写下,强加型Get_QueryString_Plus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var Get_QueryString_Plus = function(url){
var no_q = 1,
now_url = url && (url.split('?')[1] || no_q) || document.location.search.slice(1) || no_q;
if(now_url === no_q) return false;
var q_array = now_url.split('&'),
q_o = {},
v_array;
for(var i=0;i<q_array.length;i++){
v_array = q_array[i].split('=');
try{
q_o[v_array[0]] = decodeURIComponent(v_array[1]);
}
catch(e){
q_o[v_array[0]] = null;
}
};
return q_o;
}

说明:如果传参url字符串,则忽略当前的域名,如果不传参,则默认使用当前的域名,如果当前域名或这传入的url没有参数则返回false

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//情况1: 
//url为:“http://category.dangdang.com/list?cat=4001616&store=eq0”
var q_o = Get_QueryString_Plus();
alert(q_o); //[object Object]
alert(q_o.cat); //4001616
alert(q_o.store); //eq0

//情况2:
//url为:“http://www.dangdang.com/”
var q_o = Get_QueryString_Plus();
alert(q_o); //false
alert(q_o.cat); //undefined
alert(q_o.store); //undefined

//情况3:
//url为:“http://category.dangdang.com/list?cat=4001616&store=eq0”
var q_o = Get_QueryString_Plus('http://category.dangdang.com/list?cat=xxxx&store=yyyyyy');
alert(q_o); //[object Object]
alert(q_o.cat); //xxxx
alert(q_o.store); //yyyyyy

//情况4:
//url为:“http://category.dangdang.com/list?cat=4001616&store=eq0”
var q_o = Get_QueryString_Plus('http://category.dangdang.com/list');
alert(q_o); //false
alert(q_o.cat); //undefined
alert(q_o.store); //undefined