【转】jQuery 1.4 中的 JSON 问题

红薯 发布于 2010/03/05 06:57
阅读 2K+
收藏 3

升级到1.4后,使用jQuery.getJSON获取JSON数据不成功了

原来在1.3之前,jQuery转换JSON对象是使用eval来转换的。1.4之后,jQuery使用了新的方法来处理,jQuery使用了浏览器支持 的方法进行转换,例如Firefox就支持window.JSON.parse 对JSON字符串进行转换对象,但是jQuery在使用这些内部方法前,对JSON字符串进行了检验,只有符合标准的JSON格式,才可以进行转换,如果 出现了以下不符合标准的格式,1.4就不能转换成功:

{ 'foo' : 'bar' }
{ foo: 'bar' }
{ foo: "bar" }
{ "foo" : 'bar' }
标准的JSON格式中不允许使用''(单引号)来包裹 属性和字符串,也就是说要使用""(双引号)

{ "foo" : "bar" }

但是原来的程序确实使用了这样不符合标准的格式,那要怎么样才能使用1.4呢?

方法1:

$.ajax({url: "/url",
  dataType: 
"text",
  success: 
function(data) {
    json 
= eval("(" + data + ")");
  
// do something with json
  }

}
);

使用eval方法对数据进行转换

方法2,这种方法我觉得更好更便捷:

<script type=”text/javascript” language=”javascript”>window.JSON = null;</script>

把这行代码放到所有js的最前面,通过此方法欺骗程度,让jQuery以为该浏览器不支持本地方法。

加载中
0
Sephiroth
Sephiroth

JQuery升级的貌似很频繁啊...

0
oneryx
oneryx

就是这个问题,昨天浪费好长时间

0
xiaowenliang
xiaowenliang

嗯 我也是这个问题~~  因为java生成json的时候懒得用转义符,所以全是'号,结果getJSON不行,后来自己又用回eval了~

0
o仔
o仔

这个目前还没有遇到过,留个标记~~

0
罪恶的花生
罪恶的花生

这不是终极方法呀!

0
jing31
jing31

只是奇怪,为什么会出现单引号呢?

0
whao601
whao601

{ 'foo' : 'bar' }
{ foo: 'bar' }
{ foo: "bar" }
{ "foo" : 'bar' }
这种写法不标准??????????????????
0
mallon
mallon

还是要遵循标准啊,尤其是不同语言之间使用Json传递数据的时候

0
答复哈
答复哈

使用Gson者,路过...

0
答复哈
答复哈

汗...上午看完,下午就遇到了.

返回顶部
顶部