JQuery $.getJSON 加载本地 JSON 文件不起作用

Posted

技术标签:

【中文标题】JQuery $.getJSON 加载本地 JSON 文件不起作用【英文标题】:JQuery $.getJSON load local JSON file not working 【发布时间】:2012-12-02 00:54:55 【问题描述】:

我的问题很简单,我有一个名为 new.json 的文件,我正在尝试使用 JQuery 来加载和显示数据。我一直在写 javascript 代码:

$.getJSON("new.json", function(data)
        // I have placed alert here previously and realized it doesn't go into here
        $.each(data.streetCity, function(i,s)
            alert(s);
        );
    );

new.json 中的数据如下:

"streetCity":
    
        "1":"Abergement-Clemenciat",
        "2":"Abergement-de-Varey",
        "3":"Amareins"
    
;

【问题讨论】:

确保new.json 与运行发出ajax 请求的JS 的文件位于同一目录中。我很确定你也不想要; 如果没有在本地机器上运行服务器,一些浏览器在不调整设置的情况下不允许使用ajax 可能重复,如果您使用的是 Chrome:***.com/questions/2541949/… 有趣的是,它不仅影响 Chrome,还影响其他浏览器 【参考方案1】:

如果您使用的是 Chrome。因为 Chrome 不允许 xmlhttprequest 请求本地文件。所以 jquery 不能加载你的 new.json

你可以添加

--allow-file-access-from-files

到chrome的启动命令。这可以让 xmlhttprequest 加载本地资源

【讨论】:

我正在做另一个应用程序并提醒我这个问题。我已经尝试过了,是的,它现在可以工作了,谢谢。【参考方案2】:

如果您使用的是 jQuery 1.5+,您可以将错误处理程序链接到调用以查看发生了什么:

$.getJSON("new.json", function(data)
        // I have placed alert here previously and realized it doesn't go into here
        $.each(data.streetCity, function(i,s)
            alert(s);
        );
    ).error(function(jqXhr, textStatus, error) 
                alert("ERROR: " + textStatus + ", " + error);
    );

new.json 可能与调用页面位于不同的路径中。此外,如果您的 sn-ps 准确,则不需要脚本中的最后一个花括号或 json 中的最后一个分号。

【讨论】:

【参考方案3】:

你的问题是';' (分号)在 JSON 文件中。 JSON 响应不需要分号。删除您的示例应该可以正常工作!

【讨论】:

以上是关于JQuery $.getJSON 加载本地 JSON 文件不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery中读取本地json文件

getJson 错误“不允许加载本地”

使用 jQuery $.getJSON() 从 Vuejs 方法中的本地 json 文件获取数据

Jquery mobile getJSON 适用于浏览器但不适用于移动设备

jQuery之getjson信息展示

加载本地 JSON 文件