我正在使用jQuery的$.getJSON
方法向JSON页面发出请求,并且从返回的JSON中我创建了一些HTML并将其放到页面上。
当我有一个嵌套的JSON对象时出现问题,我稍后会给你看一个例子。
首先,如果我向我的JSON页面发出请求并返回以下JSON,该函数工作正常,我看到页面上出现了一个漂亮的HTML元素:
JSON:
({
"variants": [
{
"variantId": "536",
"title": "Party Like a Rock Star for Two at the Metropolitan hotel, London ",
"price": "£299.00"
}
]
})
这很好,没有错误。
但是,只要我返回下面的JSON,该功能就不起作用。
({
"variants": [
{
"variantId": "536",
"title": "Party Like a Rock Star for Two at the Metropolitan hotel, London ",
"price": "£299.00",
"blogs": [
{
"title": "Another test",
"author": "Sean",
},
{
"title": "This is a test",
"author": "Sean",
}
]
}
]
})
正如你所看到的,它中没有会导致它太破碎的字符。我也试过重命名这些字段,只是偶然的“博客”,“标题”或“作者”是JS中的保留字(正如我想的那样,没有区别!)
为了确保它不是我处理导致问题的数据的方式,我发出警报('得到这里'。);作为我的$ .getJSON函数中的第一段代码(见下文),并且不会触发,所以我知道这不是我正在处理导致错误的数据。
$.getJSON('/ajax/cover_flow_detail.ashx?experienceId=' + arguments[0], function(d) {
alert('Got here'); // doesn't fire ?
// omitted for brevity.
}
甚至更奇怪 - 这只发生在IE6中。 IE7& FF很好。
任何正确方向的推动都会受到赞赏,我完全被难过了!
干杯,肖恩
答案 0 :(得分:9)
您的JSON中有一个错误 - 某些对象定义中的尾随逗号。
(这表明你使用模板而不是JSON库生成JSON,这是一个错误。)
IE比其他浏览器更不容忍该错误。
答案 1 :(得分:0)
Internet Explorer is notorious for breaking on trailing commas。
var obj = {
upper: 1,
stage: 2,
};
在IE上失败,而其他浏览器在第二个元素之后忽略尾随逗号。
答案 2 :(得分:0)
具有讽刺意味的是,它应该是错误的。 IE做得对。如果语法不正确,浏览器不应松散地解析JSON。 ,应该像对待一样;然后
我相信它是解析器,因为在EXT JS中,它是严格的。
请记住,IE不会忽略关闭不当的HTML标记,而不会忽略Netscape。有意思的转身。