function getRequest(paramName) {
var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
var strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=decodeURI(strs[i].split("=")[1]);
}
}
return theRequest[paramName];
};
paramName就是url中的参数名
注意:
- getRequet()方法中本来使用unescape()解码,但是unescape()不能对中文解码,所以更换为decodeURL()对url中的参数进行解码。
- 如果url存在汉字,使用encodeURIComponent()将汉字进行编码,获取url中参数后使用decodeURIComponent()进行解码,就可以获取到所对应的值
- 如果rul中存在特殊字符例如:@#¥%&* 那么使用decodeURIComponent()会报错,因为导致报错的是
%
,是因为编码汉字是 % 开头的,多加一个 % 会导致 decodeURIComponent 执行报错。所以需要写一个js方法对特殊字符进行编码,在使用encodeURIComponent()进行编码之前。// 对查询关键字中的特殊字符进行编码 function encodeSearchKey(key) { const encodeArr = [{ code: '%', encode: '%25' }, { code: '?', encode: '%3F' }, { code: '#', encode: '%23' }, { code: '&', encode: '%26' }, { code: '=', encode: '%3D' }]; return key.replace(/[%?#&=]/g, ($, index, str) => { for (const k of encodeArr) { if (k.code === $) { return k.encode; } } }); };