很多时候为了保证链接传参的安全性,我们会对传递的参数进行加密处理,如下图
此时经过浏览器访问时,链接中中文字符“+”被转义会被为%20
我们会发现利用 decodeURIComponent解码时,%20会被我们解码成' '(空格),从而导致解密失败,提取不到我们想要的参数;
解决办法:
将拿到的地址链接中的%20全部替换成'+',然后进行decodeURIComponent解码;
var url = location.href; //取得整个地址栏
var num = url.indexOf("?");
var param = url.substr(num + 1); //获取整个参数串
param = decodeURIComponent(param.replace(/%20/g,"+"))
(如有更好的解决办法还请多多指教)