我们需要一个Web服务器(如Apache)来访问.json文件吗?

时间:2013-03-18 05:50:20

标签: javascript ajax json webserver

我试图使用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控制台中没有看到任何错误。)

提前致谢。

4 个答案:

答案 0 :(得分:2)

您将始终必须在您进行AJAX呼叫的地方托管您的网站。否则会抛出此异常。

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

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

答案 1 :(得分:1)

虽然从技术上讲你不需要Web服务器,但是用于抽象网络访问的一些库可能无法使用本地文件,而某些浏览器不允许本地文件做很多事情,所以类似{{{ 3}}对你的开发和测试非常有用。

答案 2 :(得分:0)

安装像http://jetty.codehaus.org/jetty/这样的小型网络服务器 易于安装,小型下载;)

答案 3 :(得分:0)

通过将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.