javascript中escape解决过滤URL传值问题
javascript中escape解决过滤URL传值问题,有需要的朋友可参考一下。
escape解决过滤URL传值问题在利用ajax传值的时候,遇到特殊符号过滤问题,特殊符号测试
XML/HTML代码01.特殊符号测试哈:~!@#$&%^*()<>,你好吗?<script>alert("hello world");</script>
因为特殊字符里面有一个&符号,会被当作与data类型传多个传时的连接符号&一样,所以其后面的字符串会被当作参数值来传递,
解决方法:
使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,
解决方法如下(另类解决办法):
JavaScript代码如下:
var tradition_content = tradition_content.replace("&",escape('&'));//tradition_content
要转换的字符串
如要转换所有&,代码如下:
var REPand = /&/g;
var tradition_content = tradition_content.replace(REPand ,escape('&'));
//tradition_content要转换的字符串