json有div标签html不显示,解决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":"

//r//n//t

//r//n"}]}';

HTML转换函数

public string ChangeString(string str)

{

//str含有HTML标签的文本

str = str.Replace("

str = str.Replace(">",">");

str = str.Replace(" "," ");

str = str.Replace("\n","
");

str = str.Replace("&","&");

return str;

}

=======================

js字符过滤html标签互转函数

function htmlencode(str) {

str = str.replace(/&/g, '&');

str = str.replace(/

str = str.replace(/>/g, '>');

str = str.replace(/(?:t| |v|r)*n/g, '
');

str = str.replace(/  /g, '  ');

str = str.replace(/t/g, '    ');

str = str.replace(/x22/g, '"');

str = str.replace(/x27/g, ''');

return str;

}

function htmldecode(str) {

str = str.replace(/&/gi, '&');

str = str.replace(/ /gi, ' ');

str = str.replace(/"/gi, '"');

str = str.replace(/'/g, "'");

str = str.replace(/</gi, '

str = str.replace(/>/gi, '>');

str = str.replace(/
]*>(?:(rn)|r|n)?/gi, 'n');

return str;

}

function textencode(str) {

str = str.replace(/&/gi, '&');

str = str.replace(/

str = str.replace(/>/g, '>');

return str;

}

function textdecode(str) {

str = str.replace(/&/gi, '&');

str = str.replace(/</gi, '

str = str.replace(/>/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
","hits":"0"},{"articleId":3,"title":"TEST1","author":"superman","content":"TEST1
","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
"

改为

"content":"123
"

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

实例2:

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

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

01

02

var str ='msg #';

03

document.all.div1.innerHTML='

'+str+'
';

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

来源:oschina

链接:https://my.oschina.net/u/152338/blog/49225

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值