近期在测试时,发现一个bug而出现的问题拿出来分享一下,
使用的场景:easyUI
问题描述如图:当点击那个数字按钮时,会跳出来一个框,但是这个框现在却不是我想要的样子
去后台查看日志,如图,这是页面跳转时路径参数含有特殊字符无法解析,导致页面报错,
解决这种问题其实也很简单,使用URL的编码解码的方法就可以解决,
encodeURIComponent:url编码,
decodeURIComponent:URL解码
这两种方法基本上可以解决大部分的页面跳转报错问题,但是这两种方法也有弊端,有些特殊字符无法转义,在跳转页面时会乱码,比如字符串中含有引号,
不过道高一尺 魔高一丈,既然有问题,就会存在解决他的办法,
办法就是在含有引号的字符串中,将引号使用其他可以转义的字符替换掉,然后在进行编码,解码时先解码,在将事先替换掉的引号替换回来,这样就完美解决页面跳转时页面保存,以及转码乱码的问题
let productNameCode = row["productName"] ;
if(row["productName"].indexOf("\'") != -1){
productNameCode = productNameCode.replace(/\'/g,"[A]");
}
productNameCode = encodeURIComponent(encodeURIComponent(productNameCode));
productName = decodeURIComponent(decodeURIComponent(productName));
if(productName.indexOf("[A]") != -1){
productName = productName.replace(/\[A\]/g,"\'");
}