3

我试图info.json使用 jQuery API 读取文件。请在下面找到代码,它是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

4 回答 4

2

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

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

在本地主机服务器上托管您的页面,我想一切都会很好地工作。

于 2013-03-18T06:05:34.180 回答
1

虽然从技术上讲,您不需要为此使用 Web 服务器,但您用于抽象网络访问的一些库可能不适用于本地文件,并且某些浏览器不会让本地文件做很多事情,所以就像一个小测试 Web 服务器静态文件对您的开发和测试非常有用。

于 2013-03-18T05:55:17.253 回答
0

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

于 2013-03-18T06:38:23.317 回答
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.
于 2017-06-27T03:09:30.880 回答