[jQuery]解决IE ‘JSON’ 未被定义的错误
By 钱运来 - Last updated: 2012/06/08 22:12:31 - 347 views - Posted in 02.JavaScript, 03.jQuery, 14.怪异问题 - Tags: JSON, JSON未被定义, JSON错误 - Leave a Comment
在撰写jQuery的Ajax时 常常会用到json
最近在写ajax的时候碰到了一个问题,在Firefox中使用 JSON.parse(); 转换字符串时正常,一拿到 IE 下执行就发生了 ‘JSON’ 未被定义 的错误。

查了一下问题,发现是因为微软 IE7以下的浏览器及IE8的相容性模式不支持 JSON.parse();
并且查到了两种转换JSON字符串的方法,JSON.parse() 与 eval() 。
eval();
eval("var jobj = {\"Key\":\"K1\",\"Value\":\"12345\"}");JSON.parse();
var jobj = JSON.parse("{\"Key\":\"K1\",\"Value\":\"12345\"}");
建议大家都是使用 JSON.parse(); 方法,因为eval()的安全性很低
但是总不能不管IE不支持的浏览器版本吧
所以推荐使用 Douglas Crockford 大师所写的library 的 json2.js 来进行分析JSON
下载地址: https://github.com/douglascrockford/JSON-js
所以方法要改写成如下:
1 |
if (typeof (JSON) == 'undefined') { |
2 |
//如果浏览器不支持JSON,则载入json2.js |
3 |
$.getScript('js/json2.js'); |
4 |
} |
5 |
6 |
var jobj = JSON.parse("{\"Key\":\"K1\",\"Value\":\"12345\"}"); |
以上即可两者兼顾。

浙公网安备 33010602011771号