如何在 Javascript 中加载本地 JSON 文件

Posted

技术标签:

【中文标题】如何在 Javascript 中加载本地 JSON 文件【英文标题】:How to load local JSON files in Javascript 【发布时间】:2011-04-23 05:09:45 【问题描述】:

我正在编写一个需要从本地 JSON 文件加载一些初始化数据的网络应用程序(嗯,实际上它最终将是一个 OS X 仪表板小部件,但我决定首先将其原型化为一个简单的网页)。我的代码如下所示:

function loadDatos()    
    var xobj = new XMLHttpRequest();
    xobj.overrideMimeType("application/json");
    xobj.open('GET', 'datos.json', true);
    xobj.onReadyStateChange = function () 
        if (xobj.readyState == 4) 
            var jsonTexto = xobj.responseText;
            ProcessTheData(jsonTexto);
        
    
    xobj.send(null);

html 文件的 BODY 标记中的 onLoad() 事件调用该函数。现在,根据我在调试时看到的情况,函数被执行,但 onReadytStateChange 事件处理程序永远不会被调用。

我该怎么办?我认为使用 XMLHttpRequest 访问本地文件有点奇怪,但是我看到的处理这个问题的新教程似乎说它应该可以工作(我见过的 99% 的文档都在谈论如何从远程服务器加载 JSON,而不是从本地文件)。

我正在使用 Firefox 3.6.10 进行测试,但我也尝试使用 Safari 4。

【问题讨论】:

这就是为什么我在 2005 年推动在 JSON 对象声明之前选择赋值子句的原因,当时所有各种编程语言 JSON 客户端都急于实现临时标准化:web.archive.org/web/20060212113746/htmatters.net/htm/1/2005/07/…跨度> 你想要 application/json,但如果文件是本地的,它不会有那个 mime 类型。尝试将覆盖注释掉 【参考方案1】:

onreadystatechange 属性没有大写字母。请参阅:MDC XMLHttpRequest

【讨论】:

【参考方案2】:

除非我们添加扩展 .json 和 MIMETYPE application\json,否则 IIS 会抛出错误。

请看这里:http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/cd72c0dc-c5b8-42e4-96c2-b3c656f99ead.mspx?mfr=true

【讨论】:

以上是关于如何在 Javascript 中加载本地 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter Mobile App 中加载和查询本地 json 数据

HTML/Javascript:如何访问在带有 src 集的脚本标签中加载的 JSON 数据

在 NativeScript 应用程序中加载本地 HTML/JavaScript/CSS

无法在 Flutter 中加载本地 JSON 文件

在一个活动中加载单个片段两次,从本地json文件中加载2个问题

在 webview 中加载本地 javascript?