解决JSON包含HTML标签无法显示的问题

主要是将json无法识别的字符进行转义

function dotran($str) {
        $str = str_replace(‘"‘,‘//"‘,$str);
        $str = str_replace("/r/n",‘//r//n‘,$str);
        $str = str_replace("/t",‘//t‘,$str);
        $str = str_replace("//",‘//‘,$str);
        $str = str_replace("/b",‘//b‘,$str);
        return $str;
    }
这样返回的数据就可以正常显示,下面是转换后的内容:
jsontext=‘{"jqry":[{"id":"121","userid":"0","status":"1","filename":"","url":"333333333","title":"aaaaaaa","type":"WatchTV","seq":"1","remark":"remarktext","content":"<p>//r//n//t<object classid=//"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000//" codebase=//"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0//"><param name=//"quality//" value=//"high//" /><param name=//"movie//" value=//"http://www.xxx.com/vod/COD4_Ep1.swf//" /><embed pluginspage=//"http://www.macromedia.com/go/getflashplayer//" quality=//"high//" src=//"http://www.xxx.com/vod/COD4_Ep1.swf//" type=//"application/x-shockwave-flash//"></embed></object></p>//r//n"}]}‘;

HTML转换函数
public string ChangeString(string str)
{
//str含有HTML标签的文本
str = str.Replace("<","&lt;");
str = str.Replace(">","&gt;");
str = str.Replace(" ","&nbsp;");
str = str.Replace("\n","<br>");
str = str.Replace("&","&amp;");
return str;
}
=======================

js字符过滤html标签互转函数
function htmlencode(str) {
 str = str.replace(/&/g, ‘&amp;‘);
 str = str.replace(/</g, ‘&lt;‘);
 str = str.replace(/>/g, ‘&gt;‘);
 str = str.replace(/(?:t| |v|r)*n/g, ‘<br />‘);
 str = str.replace(/  /g, ‘&nbsp; ‘);
 str = str.replace(/t/g, ‘&nbsp; &nbsp; ‘);
 str = str.replace(/x22/g, ‘&quot;‘);
 str = str.replace(/x27/g, ‘'‘);
 return str;
}

function htmldecode(str) {
 str = str.replace(/&amp;/gi, ‘&‘);
 str = str.replace(/&nbsp;/gi, ‘ ‘);
 str = str.replace(/&quot;/gi, ‘"‘);
 str = str.replace(/'/g, "‘");
 str = str.replace(/&lt;/gi, ‘<‘);
 str = str.replace(/&gt;/gi, ‘>‘);
 str = str.replace(/<br[^>]*>(?:(rn)|r|n)?/gi, ‘n‘);
 return str;
}

function textencode(str) {
 str = str.replace(/&amp;/gi, ‘&‘);
 str = str.replace(/</g, ‘&lt;‘);
 str = str.replace(/>/g, ‘&gt;‘);
 return str;
}

function textdecode(str) {
 str = str.replace(/&amp;/gi, ‘&‘);
 str = str.replace(/&lt;/gi, ‘<‘);
 str = str.replace(/&gt;/gi, ‘>‘);
 return str;
}

实例1

RT: 
返回的Json数据如下、带Html标签就无法显示了、

{"articleList": [{"articleId":6,"title":"拜拜拜拜 吧","author":"superman","content":"BBBBBBBBBBBB","hits":"0"}, {"articleId":7,"title":"333","author":"superman","content":"333333333333333333333333333333333333","hits":"0"}, {"articleId":1,"title":"阿萨 德","author":"heshan","content":"test","hits":"0"}, {"articleId":2,"title":"阿萨德","author":"superman","content":"123<img src="http://localhost:8080/jpkc/admin/kindeditor/plugins/emoticons/0.gif" border="0" /><br />","hits":"0"},{"articleId":3,"title":"TEST1","author":"superman","content":"TEST1<br />","hits":"0"},{"articleId":4,"title":"测 试","author":"superman","content":"测试功能!!!!","hits":"0"}, {"articleId":5,"title":"test!","author":"superman","content":"KE.util.setFullHtml(‘content‘, ‘‘);","hits":"0"},]}

解决办法:
"content":"123<img src="http://localhost:8080/jpkc/admin/kindeditor/plugins/emoticons/0.gif" border="0"/><br/>"
改为
"content":"123<img src=‘http://localhost:8080/jpkc/admin/kindeditor/plugins/emoticons/0.gif‘ alt=‘‘ border=‘0‘ /><br/>"

js方法:str.replaceAll("\"","‘");

实例2:

从服务器端以JSON格式将数据传递到客户端后,通过JS显示在HTML页面时,有一些特殊字符不能直接显示,如后台传递过来的是 ‘<b>msg</b> #‘ 通过JS显示在HTML页面中时,显示成了 msg # ,并不是msg #,这是由于<与>之间的内容看作是HTML标签了,而以&开头的 与#为HTML实体,所以显示不正常。

解决办法很简单,在JS将其渲染到HTML页面前转换一下即可:

01 <script type="text/javascript">  
02 var str = ‘<b>msg</b> #‘;  
03 document.all.div1.innerHTML=‘<pre>‘+str+‘</pre>‘;  
04    
05 //js中的字符串正常显示在HTML页面中  
06 String.prototype.displayHtml= function(){  
07     //将字符串转换成数组  
08     var strArr = this.split(‘‘);  
09     //HTML页面特殊字符显示,空格本质不是,但多个空格时浏览器默认只显示一个,所以替换  
10     var htmlChar="&<>";  
11     for(var i = 0; i< str.length;i++){  
12         //查找是否含有特殊的HTML字符  
13         if(htmlChar.indexOf(str.charAt(i)) !=-1){  
14             //如果存在,则将它们转换成对应的HTML实体  
15             switch (str.charAt(i)) {                          
16                 case ‘<‘:  
17                     strArr.splice(i,1,‘<‘);  
18                     break;  
19                 case ‘>‘:  
20                     strArr.splice(i,1,‘>‘);  
21                     break;  
22                 case ‘&‘:  
23                     strArr.splice(i,1,‘&‘);  
24             }  
25         }  
26     }  
27     return strArr.join(‘‘);  
28 }  
29 alert(str.displayHtml());  
30 document.all.div2.innerHTML=str.displayHtml();  
31 </script> 
时间: 2024-07-28 15:15:30

解决JSON包含HTML标签无法显示的问题的相关文章

解决ScrollView包含GridView或ListView显示不完整的问题

问题描述: ScrollView如果包含GridView或者ListView这样的控件,会导致后者显示不完整.默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,因为它的高度是无法计算的. 所以此问题由来已久,网上的方法很多只解决了问题的一半,另外一半问题是:ScrollView不从开始位置开始显示,如下图: 解决方法: 以ScrollView包含GridView为例. 一.定义自己的Gridview,覆写onMeasure方法 public class My

Discuz tag 标签重复显示的解决方法

最近论坛遇到个问题,Discuz tag标签出了问题,编辑一次就添加一个标签,如下图:<ignore_js_op> 删都删不掉,看着真TM不爽,于是,想到了解决办法,如下:Discuz帖子下方的tag标签重复显示,表现为相同的tag标签多次显示,帖子编辑次数越多,tag重复的次数越多.Discuz!官方直到Discuz X3.2也没有解决tag重复的问题.要解决Discuz标签重复,可以通过修改source\module\forum\forum_viewthread.php来实现.用notep

C++模版基于包含模型之外的显示实例化

一."经典模型"的失效 我们学过C++的人都知道,在C++中组织代码的经典模型是:将函数或类的声明和定义部分分开在不同的文件之中   , 即一般将声明放在一个.h的头文件中而定义在放在一个.cpp文件之中,当然这的确是写代码的一种很优良的风格,但问题 是如果将这种"经典模型"应用到模版上时就会发生连接上错误. 例如: 文件"A.h" #include"iostream" using namespace std; #pragma

《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中

http://blog.csdn.net/mazhaojuan/article/details/8599167 先看一下我要实现的功能界面: 这篇文章主要介绍:后台一般处理程序把从数据库查找的数据,转换成JSON,然后传递到前台JS文件中,JS解析JSON数据,并将数据显示在界面,主要介绍两种显示方式,显示在DropDownList控件 or 显示在动态创建的Table表中.   本文主要介绍两个地方: 1.根据学年查询学期信息的实现--JS将解析的JSON数据绑定到DropDownList框

json与html标签互相转换

1.Java中json字符串包含html标签 /**      * json含有HTML标签的文本      * @param str      * @return     */    public static String switchStr(String str){        str = str.replace("<","<");        str = str.replace(">",">"

json包含单双引号问题解决方案

原创作品  转载请注明出处 最近项目中  遇到需要JSON传数据  但是某个字段 里面可能含有 双引号和单引号  导致出现错误 为了方便 写了一个工具类,比较好用. 支持"链式编程" 分享给大家 360网盘下载地址:http://yunpan.cn/cjCrRZj9uc8hE  访问密码 79f3 效果DEMO: JsonQuotesUtil.js /** * 解决json传输数据时存在 同时存在单引号和双引号的问题 * * 思路: * 将 单双引号用不容易在字符串中出现的字符分别替换

解决苹果手机Safari浏览器下 字体显示为 蓝色的 问题

解决苹果手机 Safari浏览器下   字体显示为蓝色的 问题 近期测试同学测试,wap站上,底部文字在苹果8上面 ,使用 Safari浏览器打开,一直显示 蓝色字体 其他正常,寻找半天无解,最后 阳仔 小伙伴 猛然想起来,这是 不兼容,少了一句meta标签 在 head区域 添加上 这句话 即可  ,正常显示 字体颜色了 <meta name="format-detection" content="telephone=no"> 原文地址:https:/

解决IDEA的HTML文件格式的显示问题

解决IDEA的HTML文件格式的显示问题 用IDEA在显示HTML文件的时候,格式非常奇怪,比如body标签下面不会自动缩进,每次都需要手动缩进,怪麻烦的.解决办法如下: settings> Editor> Code Style>HTML 选择框框标出来的Other,注意下方的Do not indent children of,存在的标签表明不会自动缩进,需要点击小文件夹,将<html>.<head>.<body>给取消,就ok了. 原文地址:http

MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白

MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白,症状如下: 解决方案如下: MyEclipse导入主题文件epf后xml及jsp等页面中点击标签之后显示灰白,布布扣,bubuko.com