// 封装一个函数提取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; //返回参数值
};
直接解析url时,出现了中文参数乱码的现象。
网上查找原因:只有字母和数字[0-9a-zA-Z]、一些特殊符号”$-_.+!*’(),“[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。”
这意味着,如果URL中有汉字,就必须编码后使用。但是麻烦的是,RFC 1738没有规定具体的编码方法,而是交给应用程序(浏览器)自己决定。
于是使用 JavaScript 的编码函数 encodeURI() 和解码函数 decodeURI() 解决了问题。
// 封装一个函数提取url
function getUrlParam(name) {
// 对url进行编码
var url = encodeURI(window.location.search);
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = url.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]); return null; //返回参数值
};
// 对url进行解码
var materialname = decodeURI(getUrlParam('MaterialName'));//正常