Javascript $.getJSON返回未定义并产生XML解析错误

Javascript $.getJSON返回未定义并产生XML解析错误,javascript,jquery,html,json,Javascript,Jquery,Html,Json,在我开始之前,我想指出这是一个学校项目,我已经查看了多个搜索结果,在这样做了2个小时后,我坦白地放弃了。。。我的问题是以下代码: var books; var x = $.getJSON("book_data.json", function(response){ books = response; }); console.log(x.responseJSON, books); 记录以下内容: undefined undefined 有一个错误: XML Parsing Error:

在我开始之前,我想指出这是一个学校项目,我已经查看了多个搜索结果,在这样做了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:
可以找到它提取的json

我添加了一个

console.log(response);

在getJSON块中,以确保它可以解析它(它可以解析它),以及只记录x以确保我得到正确的响应(我这样做)。我发现了其他堆栈溢出,并尝试了他们的建议,但仍然无法解决此问题。有没有更好的方法来获取我想要的信息,或者我应该放弃,只是将json转换成一行代码,并将其放入我的html文件中

getJSON是一种异步方法,您只需要在回调函数中读取json内容

此外,由于您正在从本地C:drive读取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数据

在加载json的不同尝试之后,我能够找到解决方案。当我尝试在Firefox中加载JSON时,我没有收到任何致命错误,但是,在Chrome中打开它却收到了致命错误。Chrome也给出了一个理由,并从内存中执行此操作,但我猜这与安全问题有关,以帮助防止潜在的XSS


我能够使用存储JSON并获得所需的文件,而不会出现错误。我假设发生了错误,因为我是从html文件本地运行它,而不是从处理该文件的服务器运行它

在我的例子中,我使用我自己的代码作为服务器基本上借用的代码,以及标题

Content-Type: application/json
他失踪了。增加

    httpExchange.setAttribute("Content-Type", "application/json");

将响应记录到服务器的代码中,它就工作了。

您记录响应的时间太快了。将console.log向上移动一行到函数中。我已经尝试过这样做,但是记录它并不能帮助我解决错误,也不能帮助我保留解析.json生成的对象数组。我看不出每次需要解析都有什么意义,尤其是当我不再在客户端编辑这些信息,我计划将其用于多种功能时。我仍然会遇到错误。我已经将数据通过两个不同的验证器。在浏览器的“网络”选项卡中,检查book_data.json响应是否被正确检索。如果这是您的要求,则没有获取请求。但是,我可以通过调试器访问书籍_data.json。不确定这是否算数……因为您有一个$.getJSONbook_data.json,所以应该会从您的浏览器触发一个GET请求,您可以在开发人员工具的网络选项卡中看到。您需要验证该调用是否返回有效的JSON。如果没有,那么你没有在这里分享的其他东西是错误的。能够在调试器中查看json文件在这个上下文中不起作用,这是代码中唯一我引用或使用该文件的地方。