【问题标题】:Do we need a web server (like Apache) to access a .json file?我们是否需要 Web 服务器(如 Apache)来访问 .json 文件?
【发布时间】:2017-06-27 11:09:30
【问题描述】:

我试图使用 jQuery API 读取 info.json 文件。请在下面找到代码,它是test.html 的一部分。

$.getJSON('info.json', function(data) {
  var items = [];
  $.each(data, function(key, val) {
    items.push('<li id="' + key + '">' + val + '</li>');
  });

test.html 文件位于我的本地计算机上,当我尝试在浏览器中打开它时,没有触发 Ajax 调用,也没有读取 info.json 文件。

是否因为我没有网络服务器而无法正常工作?还是我在代码中做错了什么? (不过,我在 Firebug 控制台中没有看到任何错误)。

提前致谢。

【问题讨论】:

  • 访问json文件不需要apache,如果访问本地文件,协议为file://xxxx,通过http协议为http://xxxx
  • @AkhilThayyil 你确定吗?浏览器不会抛出安全限制错误?
  • 拥有一个测试服务器总是一件好事。试试wampserver.com/en
  • @harsha 如果您从同一路径访问 json 文件,则不会发生安全执行,请检查此stackoverflow.com/questions/10760689/…
  • @AkhilThayyil :这正是我的观点。您必须在浏览器上手动更改同源策略。默认情况下不是!

标签: javascript ajax json webserver


【解决方案1】:

您将始终必须从您进行 AJAX 调用的地方托管您的网站。否则会抛出这个异常。

origin null is not allowed by access-control-allow-origin

在 localhost 服务器上托管您的页面,我想一切都会很好。

【讨论】:

  • 感谢 blunderboy... 是的,它在放置在 localhost 服务器下后开始工作,我使用了 xampp 包。
【解决方案2】:

虽然从技术上讲,您不需要网络服务器,但您用于抽象网络访问的一些库可能不适用于本地文件,并且一些浏览器不允许本地文件做很多事情,所以像 @987654321 @ 对您的开发和测试非常有用。

【讨论】:

  • 感谢 Thilo,我也会尝试使用 node.js :)
【解决方案3】:

安装一个小型网络服务器,例如http://jetty.codehaus.org/jetty/ 易于安装,下载量小;)

【讨论】:

    【解决方案4】:

    通过将 JSON 字符串放入文本文件并将其加载到 iframe 中,您可以推断数据。 (大多数浏览器都可以在 iframe 中加载 .txt 文件。)

    var frame = document.createElement("IFRAME"); //Create new iframe
    var body = document.body;
    frame.onload = function() { //Extrapolate JSON once loaded
      data = JSON.parse(frame.contentDocument.documentElement.innerText); //Loads as a global.
      body.removeChild(frame); //Removes the frame once no longer necessary.
    }
    frame.style.display = "none"; //Because the frame will have to be appended to the body.
    body.appendChild(frame);
    frame.src = "your JSON.txt"; //Select source after the onload function is set.
    

    【讨论】:

      猜你喜欢
      • 2014-03-10
      • 2018-08-16
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2013-10-11
      • 2019-08-12
      相关资源
      最近更新 更多