【问题标题】:Javascript: can't load JSON file from localhostJavascript:无法从本地主机加载 JSON 文件
【发布时间】:2013-09-04 17:30:54
【问题描述】:

我目前正在阅读“Head first HTML5 programming”一书。我想从我自己机器上的 Web 服务器加载名为 sales.json 的文件的内容。我为此使用了 wampserver。

在文件夹wamp/www/gumball/ 中,我放置了所有相关的.html.js.css 文件,以及sales.json 文件。

我的 JavaScript 代码很简单:

window.onload = function() {
    var url = "http://localhost/gumball/sales.json";
    var request = new XMLHttpRequest();
    request.open("GET", url);
    request.onload = function() {
        if (request.status == 200) {
            updateSales(request.responseText);
        }
    };
    request.send(null);
}

function updateSales(responseText) {
    var salesDiv = document.getElementById("sales");
    salesDiv.innerHTML = responseText;
}

这没有任何作用!在我的浏览器中输入链接:http://localhost/gumball/sales.json 会打开正确的文件,因此链接应该是正确的。即使使用本书附带的.js 文件(以及我正在尝试制作的应用程序的完成版本),也没有加载任何内容。

使用警报语句进行测试告诉我request.onload 事件永远不会发生。我不知道为什么会这样。

一个我还不太明白的事实:当我在浏览器中输入:http://localhost/gumball/sales.json:(我在链接末尾添加了一个冒号)时,我收到了 403 Forbidden 错误!为什么会这样?这跟我的问题有关系吗?

【问题讨论】:

  • 如何打开初始文件?你必须通过http://localhost/...打开它,而不是file://
  • 您从哪个网址加载来自
  • 什么意思?您可以在我的代码中看到我尝试访问该文件的方式,并在浏览器中键入 localhost/gumball/sales.json 会返回所需的文件。所以我不是从 file:// 打开它。当我使 wamp 服务器脱机时,我使用的链接不起作用。
  • @Kappie001 — dystroy 和 SLaks 询问您如何打开 HTML 文档,而不是 JSON 文档。
  • @Kappie001 你有没有在控制台收到任何错误?

标签: javascript json localhost


【解决方案1】:

我用firefox打开html文档

您的 HTML 文档必须使用http:// 中的 URL 而不是 file:// 打开,如果您希望它能够在 javascript 中打开另一个文档,除非第二个文档使用相关的CORS headers 提供。

这是由于same origin policy

由于您有本地 WAMP 服务器,所以没有问题:只需使用 http:// URL 打开您的文件,就像您打开 JSON 文件一样。

【讨论】:

  • 是的,它正在工作。我现在完全明白了。感谢您的快速回复!
猜你喜欢
  • 1970-01-01
  • 2019-05-30
  • 2015-12-26
  • 1970-01-01
  • 2019-08-25
  • 2020-10-15
  • 2016-02-04
  • 2020-01-21
相关资源
最近更新 更多