jquery获取url以及jquery获取url参数的实现方法

1.使用jquery获取当前url:

window.location.href;

(给window.location.href=”XXX” 赋值,即在当前位置打开新页面)

2.jquery获取url参数要用正则表达式,首先看一下单纯的通过js来获取url中的某个参数:

1
2
3
4
5
function getUrlParam(name){
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");//构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg);//匹配目标参数
if(r!=null) return unescape(r[2]);return null;//返回参数值
}

小知识:

unescape(string)方法是用来解码的,与escape(string)相对应
unescape()的工作原理是:通过找到形式为%xx和%uxxx的字序列(表示十六进制的数字),用Unicode字符\u00xx和\uxxx替换这样的字符序列进行编码。
unescape()和escape()函数已被废除,用decodeURI()和decodeURIComponent()(对编码后的url进行解码,encodeURIComponent是编码)取代

通过这个函数传递url中的参数名就可以获取到参数的值,比如url为:

http://localhost:33064/WebForm2.aspx?reurl=WebForm1.aspx

我们要获取reurl的值,可以这样写:

1
var xxx = getParam('reurl');

明白了js获取url的方法我们可以通过这个方法为jquery扩展一个方法来通过jquery获取url参数,下面的代码为jquery扩展了一个getUrlParam()方法

1
2
3
4
5
6
7
(function($){
$.getUrlParam = function(name){
var reg = newRegExp("(^|&)" + name + "=([^|$]*)");
var r = window.location.search.substr(1).match(reg);
if(r != null) return unescape(r[2]); return null;
}
})(jquery)

为jquery拓扩展了方法后我们就可以通过这种方法来获取某个参数的值了:

1
var xx= $.getUrlParam('reurl');

完整代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
//方法一
function($){
$.getUrlParam = function(name){
var reg = new RegExp("()" + name + "");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
})(jquery);
var xx = $.getUrlParam('reurl');
alert(xx);
});

//方法二
//获取url中的参数
function getUrlParam(name){
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
</script>

用上面的方法获取url中的参数时,url中传递的中文参数在解析的时候无论怎么测试,获取的都是乱码。经过一番调试后发现,我再传递参数时,对汉字编码使用的是 encodeURI ,而上面的方法在解析参数编码时使用的是unescape ,修改为 decodeURI 就可以了。