在开始之前,我想指出这是针对一个学校项目的,并且我已经查看了多个搜索结果,经过2个小时的搜索,我坦率地放弃了...我的问题是代码:
var books;
var x = $.getJSON("book_data.json", function(response){
books = response;
});
console.log(x.responseJSON, books);
记录以下内容:
undefined undefined
有错误:
XML Parsing Error: syntax error
Location: file:///C:/Users/.../book_data.json
Line Number 1, Column 1:
可以找到here。
我添加了
console.log(response);
在getJSON块中以确保它可以解析它(可以做到),以及仅记录x以确保我确实获得了正确的响应(我可以这样做)。我发现了其他堆栈溢出,并尝试了他们的建议,但仍然无法解决此问题。有没有更好的方法来获取我想要的信息,或者我应该放弃,只需将json转换为一个衬纸并将其放入我的html文件中?
答案 0 :(得分:1)
$。getJSON是一个异步方法,您只需要在回调函数中读取json内容。
此外,由于您正在从本地C:驱动器读取json文件,因此暗含了“ text / xml”的mimeType,因此您的浏览器将尝试将其解析为XML到基础XHR对象的.responseXML中。这将导致XML解析错误。您需要在调用getJSON之前指定mimeType,
$.ajaxSetup({
scriptCharset: "utf-8",
contentType: "application/json; charset=utf-8"
});
var books;
var x = $.getJSON("book_data.json", function(response){
books = response;
console.log(JSON.stringify(books));
});
还有一件事,请确保book_data.json具有有效的json数据
答案 1 :(得分:0)
经过多次尝试加载JSON的尝试,我找到了解决方案。当我尝试在Firefox中加载JSON时,我没有遇到任何致命错误,但是在Chrome中打开它却成功了。 Chrome也给出了一个原因(并从内存中做到这一点),但它与安全性问题有关(我的猜测是为了防止潜在的XSS)。
我能够使用http://myjson.com/存储JSON并获取所需的文件,而不会出现错误。我假设发生了错误,因为我是从html文件而不是从处理该文件的服务器在本地运行它。
答案 2 :(得分:0)
在我的情况下,我使用自己的代码作为服务器(基本上是借用here)和标头
Content-Type: application/json
不见了。已添加
httpExchange.setAttribute("Content-Type", "application/json");
到服务器的代码,它就起作用了。