首页新闻找找看学习计划

求大神帮忙解决一下IE8下面json2.js的json.stringify()方法无法使用的问题(被IE8内置方法取代)

0
悬赏园豆:10 [已关闭问题] 关闭于 2015-01-26 10:38

最近做项目中出现在IE8下出现把json对象转为json串中文变成unicode的问题,看网上的资料说,发现是IE8内置JSON.stringify()引起的

// 把json对象转为json串

var policy_content = JSON.stringify(data.jsonObject);

policy_content={policy”:[{"name":"must_installed","enabled":1,"key_check":1,"content":{"must_installed_list":["\u641c\u72d7"]}
,”desc”:”\u5fc5\u987b\u5b89\u88c5\u8f6f\u4ef6″}]}

但是用eval(” var g_policy = ‘”+policy_content+”‘;”)进行转换的时候,调试控制台显示eval无法解析“\u5fc5\u987b\u5b89\u88c5\u8f6f\u4ef6”,但是用alert(policy_content)的时候,又会显示出中文,只不过传输到C#后台的时候,还是一串unicode字符类型。

后来找到一种解决的办法是把页面的<!DOCTYPE html>声明去掉,这样做之后C#后台得到的是中文,不过没有html声明的dtd文件约束页面格式,jDialog弹出的层样式又乱了。

求大神帮忙解决一下,感谢!

 

注:IE版本号 8.7600.16385

Leon719的主页 Leon719 | 菜鸟二级 | 园豆:214
提问于:2015-01-14 18:42
< >
分享
所有回答(3)
0

内置的这个问题多多

如果要兼容不同的浏览器,最好使用库,如json2.js等

2012 | 园豆:18932 (专家六级) | 2015-01-15 08:49

我引用了json2.js,但是json2检测到IE8定义了JSON.stringify()这个方法,json2的方法默认就不启用了,网上有人说把json2 的JSON改成JSON2,使用JSON2.stringify(),但是我把json2.js的“JSON”都替换为JSON2之后,用JSON2.stringify()显示方法未定义,请问怎么解决这个问题?

支持(0) 反对(0) Leon719 | 园豆:214 (菜鸟二级) | 2015-01-15 09:26

@Leon719: 这的确是IE8的一个bug,找到两篇文章:
 http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/05/15/ie8-json-bug.aspx 
 http://www.touding.com/member/user.asp?id=880693&ty=q 

支持(0) 反对(0) 2012 | 园豆:18932 (专家六级) | 2015-01-16 09:02

@2012: 这些页面方法我看过了,就是不知道怎么把json2.js里边的json.stringify()方法改成json2.stringify(),请问你知道吗?

支持(0) 反对(0) Leon719 | 园豆:214 (菜鸟二级) | 2015-01-19 09:53
0
醉心 | 园豆:99 (初学一级) | 2015-01-15 08:56

我用这个方法解决不了,如果是\xx\xx这样的编码,用eval()是可以转成中文,我试过,但是\u987b\u987b这样的编码,用eval转换的时候会报错,但是在控制台里边看,报错下面一行是有正确的中文的。我觉得很费解

支持(0) 反对(0) Leon719 | 园豆:214 (菜鸟二级) | 2015-01-15 09:24
0

怎么解决的啊? 我也到这样的问题了。

凡事无绝对! | 园豆:9 (初学一级) | 2016-06-09 10:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册