在IE中用jQuery ajax处理json的问题,求解答~

2012-09-11 14:39:45 +08:00
 VeryCB
http://gist.github.com/3696454

用上面的代码处理data.json,在firefox中是好的,但是IE(6、7、8)中失败,然后我把data.json中的“song”的value删到只剩一组,在IE中就好了,但是有两组或两组以上值的时候就不行,求解答~感谢!

原来的data.json和"song"只有一组值的data.json代码如下:

http://gist.github.com/3696479
6011 次点击
所在节点    JavaScript
11 条回复
altchen
2012-09-11 14:51:48 +08:00
是不是你的数组>1的时候是最后有个逗号如[{},{},]
去掉最后的逗号试下
VeryCB
2012-09-11 14:53:39 +08:00
@altchen 没有逗号...
lerry
2012-09-11 15:05:21 +08:00
@VeryCB 你看content-type设置正确了吗
VeryCB
2012-09-11 15:16:41 +08:00
@lerry 设了contentType: "application/json; charset=utf-8" 也不行...
VeryCB
2012-09-11 15:58:28 +08:00
放弃用本地文件了,写了个服务器端来放回json,问题解决~
xmmwc
2012-09-12 00:23:10 +08:00
$.ajax({
type: "GET",
url: "data.json",
cache: false,
success: function (data) {
data = eval("("+ data + ")");
var i = 0;
$('#player .album-cover a').attr({
href: data.song[i].album,
title: data.song[i].albumtitle
});
$('#player .album-cover img').attr({
src: data.song[i].picture,
alt: data.song[i].albumtitle
});
}
});
Julyyq
2012-09-12 00:52:28 +08:00
朱一表示测试JSON神马的,要么在服务器环境下,要么在IE9下。。。
weicaizhi
2012-09-12 11:00:45 +08:00
个人经验是,IE浏览器对JS的逗号要求很严格,多一个就会报错,尤其是兼容模式下。所以建议你用IE9选择IE 7或8 浏览模式,然后把调试打开,如果真是我说的这种问题,调试会帮你找到错误的那一行的,我这也是好多次都是这样的问题。
tangzx
2012-09-12 17:04:51 +08:00
因为火狐有原生的JSON。parse,对JSON格式要求很松,而IE没有这个方法,jquery会调用自己实现的json。parse,而jquery自己实现的jqueryparse很严格,不能有格式错误,请去json。org上参考,空格不允许,键值必须用引号括起来
cougar
2012-09-13 11:43:41 +08:00
不用$.each迭代吗?
chuxiwen
2012-09-13 13:32:28 +08:00
dataType

The type of data that you're expecting back from the server.

在服务器端的返回 content-type设置需为 "application/json;charset=UTF-8"

另外,JSON 的生成最好用已有的库或者直接对 object 进行 serialization

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/47441

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX