摘要:当你需要拿到地址栏上的参数的时候,这个篇文章一定会对你有帮助。这里我们使用jquery来获取获取url及url参数的方法,还要避免中文乱码哦。

方法一:jquery获取url

1
2
3
4
5
<script src='//cdn.bootcss.com/jquery/3.1.1/jquery.min.js'></script>
<script>
var url = window.location.href;
alert(url);
</script>

方法二:jquery获取url参数

1
2
3
4
5
6
7
8
9
10
<script src='//cdn.bootcss.com/jquery/3.1.1/jquery.min.js'></script>
//获取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; //返回参数值
}
var parameter = getUrlParam("name");

alert(parameter);

但是方法二有一个弊端,就是遇到中文会显示乱码。显示英文和数字则没有问题的。方法三就是改良版

方法三:jquery获取url参数,兼容中文

1
2
3
4
5
6
7
8
9
10
<script src='//cdn.bootcss.com/jquery/3.1.1/jquery.min.js'></script>
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;
}
var parameter = getUrlParam("name");

alert(parameter);

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

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

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

因此javascript对参数编码解码方法要一致:

escape() unescape()

encodeURI() decodeURI()

encodeURIComponent() decodeURIComponent()

注释:
encodeURI():主要用于整个URI
encode-URIComponent():主要用于对URI中的某一段进行编码。
它们的主要区别在于,encodeURI()不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;
而encodeURIComponent()则会对它发现的任何非标准字符进行编码。

所谓的乱码只是编码解码的问题而已。只要一致就没有问题