jquery、javascript获取地址栏url参数的方法

首先看看单纯的通过javascript是如何来获取url中的某个参数

function getQueryString(name)
{
var reg = new RegExp(“(^|&)”+ name +”=([^&]*)(&|$)”);
var r = window.location.search.substr(1).match(reg);
if(r!=null)return decodeURI(r[2]); return null;
}

通过这个函数传递url中的参数名就可以获取到参数的值,比如url为
http://www.netpc.com.cn/?name=测试&num=100
我们要获取name的值,可以这样写:

alert(getQueryString(‘name’));

接下来jquery:

(function ($) {
$.getQueryString= function (name) {
var reg = new RegExp(“(^|&)”+ name +”=([^&]*)(&|$)”);
var r = window.location.search.substr(1).match(reg);
if(r!=null)return decodeURI(r[2]); return null;
}
})(jQuery);

调用方法:var x = $.getQueryString(‘num’);

如果上面decodeURI 使用的是unescape那么中文就会乱码。

附: W3School中的介绍:

JavaScript unescape() 函数

定义和用法

unescape() 函数可对通过 escape() 编码的字符串进行解码。

参数 描述
string 必需。要解码或反转义的字符串。

 

说明

该函数的工作原理是这样的:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和 \uxxxx 替换这样的字符序列进行解码。

提示和注释

注释:ECMAScript v3 已从标准中删除了 unescape() 函数,并反对使用它,因此应该用 decodeURI() 和 decodeURIComponent() 取而代之。

 

综上: javascript对参数编码解码方法要一致:

escape()   unescape()

encodeURI()   decodeURI()

encodeURIComponent()    decodeURIComponent()

此条目发表在开源代码分类目录,贴了标签。将固定链接加入收藏夹。

发表回复