首先,你要知道在地址中只会有一个问号‘?’,而‘&’,‘=’肯定是链接参数的,如果参数为‘?’’&’, ‘/’会被替换成‘%2f’之类的。
URL中一些字符的特殊含义,基本编码规则:
l 空格换成加号(+)
l 正斜杠(/)分隔目录和子目录
l 问号(?)分隔URL和查询
l 百分号(%)制定特殊字符
l #号指定书签
l &号分隔参数
URL特殊符号及对应的十六进制值编码:
l + URL 中+号表示空格 %2B
l 空格 URL中的空格可以用+号或者编码 %20
l / 分隔目录和子目录 %2F
l ? 分隔实际的 URL 和参数 %3F
l % 指定特殊字符 %25
l # 表示书签 %23
l & URL 中指定的参数间的分隔符 %26
l = URL 中指定参数的值 %3D
例子:
<script>
var errorLocation = 'http://localhost/webapp/wcs/stores/servlet/GoalSearchView?guarantee_yearsLeft=6&guarantee=is+still+active&topLevelCategoryId=14051&langId=44&monthNyear=07%2F04%2F2015&bought_month=&cost=23&manufacturer=a+%26+r+alpha&bought_year=&catalogId=10001&ErrorCode=05138&errorMsgInternal=No+Rates+found%0A"eType=new&categoryId=14052&condition=good+working+order&storeId=10151&email=&ddkey=http:DGGetQuote';
var paraString = errorLocation.substring(errorLocation.indexOf('?') + 1,errorLocation.length);
var paraJsonString;
paraJsonString = paraString.replace(/\=/g,"\"\:\"");
paraJsonString = paraJsonString.replace(/\&/g,"\",\"");
paraJsonString = paraJsonString.replace(/\+/g," ");
paraJsonString = paraJsonString.replace(/\%26/g,"&");
paraJsonString = paraJsonString.replace(/\%2F/g,"\/");
paraJsonString = paraJsonString.replace(/\%0A/g,"\:");
paraJsonString = '{"' + paraJsonString + '"}';
paraJson = JSON.parse(paraJsonString);
console.log(paraJson);
</script>
网友评论