您的位置:首页 > 其它

后台数据输出到前台页面转义问题

2017-11-16 11:16 375 查看

后台数据输出到前台页面转义问题

操作1:
要操作的数据库数据:*&^~!=<。
目的:原样输出到浏览器。
操作:把数据传到前台的input隐藏域中,然后通过jQuery获取数据,最后把数据拼接到标签中。
操作发现浏览器输出的结果是:*&^~!=<。
用浏览器调试功能查看了一下标签input中的value数据,发现是我的数据*&^~!=<,没有错误,但是用jQuery获取的数据却是*&^~!=<,然后拼接到浏览器也是这个*&^~!=<。
问题:浏览器把"<"转义成了"<",这明显不是我所想要的,此时我就想既然浏览器把我的数据转义了,那我就先把数据转义,然后再传给浏览器,这样应该就可以了吧,然后我就做了以下操作:

操作2:
java代码处理数据:str.replace("&", "&")
(注:其中&是&的实体编号)
然后把数据传到前台,然后发现并不是我所想的那样。
此时的结果是:input的value值是*&^~!=&lt;
jQuery依然是:*&^~!=<,这就不地道了啊,我写<你把他转成<我没话说,怎么我把&转义成&实体后jQuery依然把我的数据给转义了,难道jQuery拿到数据这个过程对我的数据做了两次转义。然后我又做了以下操作:

操作3:
在原本的java代码后面在对数据转义:str.replace("&", "&").replace("&", "&")
此时再测试发现前台显示的数据是正确的。
附:
java代码:
public static String escape(String point) {
point = point.replace("&", "&").replace("&", "&");
return point;
}
jsp测试代码:
<input type="hidden" id="te" value="*&^~!=<"/>
<input type="hidden" id="te1"  value="*&^~!=&lt;"/>
<input type="hidden" id="te2" value="*&#38;^~!=&#38;lt;"/>
<span class="te"></span><br>
<span class="te1"></span><br>
<span class="te2"></span><br>
<script type="text/javascript">
var te  = $("#te").val();
var te1 = $("#te1").val();
var te2 = $("#te2").val();
$(".te").prepend(te);
$(".te1").prepend(te1);
$(".te2").prepend(te2);
</script>

总结:jQuery拿到数据时会对数据进行一次转义,然后把数据拼接,通过浏览器显示到页面上时,此时浏览器对拼接的数据解析又进行了一次转义,也就是说通过js处理后台数据时,这个数据应该在后台转义两次;如果不通过js处理数据,此时后台只需要转义一次即可。
第一次写,小激动啊,不足之处望多多指教!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐