用XMLHttpRequest加载JSON文件时火狐中的“不正确”错误

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

当我的页面上的JavaScript加载一个包含JavaScript对象符号格式的对象的文本文件时,我在Firefox 3.0.7的错误控制台中得到了一个“not well-formed

”的错误。如果该文件只包含JSON对象,则会产生错误。如果我把对象包装在<document></document>标记不会产生错误。请求在任何一种情况下都会成功,所以我可以忽略它,但是我不希望错误日志填满这些消息。

下面是一些示例代码来说明这个问题。首先,名为“data.json”的文件:

{ a: 3 }

现在加载文件的代码如下:

var req = new XMLHttpRequest();
req.open("GET", "data.json");
req.send(null);

它在Firefox错误控制台中生成以下错误:

not well-formed

除了XMLHttpRequest之外,还有另一种可以与纯文本一起使用的加载数据的方法吗?

提问于
用户回答回答于

您尝试过使用MIME类型来处理JSON吗?

application/json

您还可以配置服务器,以便为.json文件自动发送此MIME类型。

用户回答回答于

首先,真正的JSON要比JavaScript严格得多,要想成为有效的JSON,必须引用您的键。

 { "a": 3 } 

此外,在使用裸XMLHttpRequest时,它通常希望接收XML结果,除非MIME头严格指定其他结果。

但是,您可能希望简单地使用JavaScript框架(如jQuery)来简化,可以:

$.getJSON("data.json",{}, function( data ){ 
  /*  # do stuff here  */ 
});

此外,如果同时使用严格的JSON并使用库为您抽象它,当浏览器开始使用原生JSON解析器时,库将能够透明地使用这些并获得显著的速度改进。

扫码关注云+社区