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

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

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

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

操作3:
    在原本的java代码后面在对数据转义:str.replace("&", "&#38;").replace("&", "&#38;")
    此时再测试发现前台显示的数据是正确的。
    附:
    java代码:
        public static String escape(String point) {
            point = point.replace("&", "&#38;").replace("&", "&#38;");
            return point;
        }
    jsp测试代码:
        <input type="hidden" id="te" value="*&^~!=&lt;"/>
        <input type="hidden" id="te1"  value="*&#38;^~!=&#38;lt;"/>
        <input type="hidden" id="te2" value="*&#38;#38;^~!=&#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处理数据,此时后台只需要转义一次即可。
     第一次写,小激动啊,不足之处望多多指教!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值