Javascript $.getJSON不使用本地JSON文件

Javascript $.getJSON不使用本地JSON文件,javascript,jquery,json,local,Javascript,Jquery,Json,Local,我正在拼命地尝试在本地构建一个站点,以获得一个JSON文件(也是本地的),但运气不好。确切的代码在我的服务器上运行得很好,但一旦本地,就会中断 我使用jQuery获得JSON,如下所示: $.getJSON( "lib/js/app.json", function(data){ $.each(data, function(i,user){ +'<img src="'+user.thumbnail+'"/> });

我正在拼命地尝试在本地构建一个站点,以获得一个JSON文件(也是本地的),但运气不好。确切的代码在我的服务器上运行得很好,但一旦本地,就会中断

我使用jQuery获得JSON,如下所示:

$.getJSON(
 "lib/js/app.json",
     function(data){
        $.each(data, function(i,user){
        +'<img src="'+user.thumbnail+'"/>
        });
      }
);

我渴望得到答案。请帮帮我。

您应该使用
http://localhost
over
file://localhost

$.getJSON(
 "http://localhost/Users/blakestruhs/new/lib/js/app.json",
     function(data){
        $.each(data, function(i,user){
        +'<img src="'+user.thumbnail+'"/>
        });
      }
);
$.getJSON(
"http://localhost/Users/blakestruhs/new/lib/js/app.json",
功能(数据){
$。每个(数据、函数(i、用户){
+'
});
}
);

XmlHttpRequest不允许跨域

如果您需要在本地pc上进行演示,请将web应用程序设置为在本地web服务器上运行,并将json源返回给相同的web应用程序


这是我唯一能想到的让它工作的方法。出于安全原因,您不能在文件系统上使用Ajax调用。

我认为您使用的是像chrome这样的Webkit浏览器,对吗?Chome没有看到两个本地文件之间的关系。使用Firefox或在Web服务器上运行;)


JSON必须通过HTTP协议而不是本地文件协议加载

跨域的抱怨是,它会将每个文件视为不同的域,因此您需要在web服务器中运行它


要么设置本地Web服务器,要么将JSON存储在变量中,然后完全跳过getJSON。

我认为如果使用IP地址访问调用getJSON的页面,那么JSON文件将使用IP地址而不是localhost,实际上,它们属于同一个域,应该可以工作。Chrome不允许对本地文件进行ajax调用。请参阅而不是使用getJSON,对于支持它的浏览器(包括Chrome),您可以使用FileReader API

var r = new FileReader();
r.onload = function(e) {
        var obj = JSON.parse(e.target.result);
        // do what you will with the object
}
// Start the async read
r.readAsText(file);
请注意,file变量必须是file或Blob对象。最简单的方法是让用户从文件输入元素中选择它。如果您需要在不询问用户的情况下读取文件,您可以签出:

尝试将bin设置为公共,并提供getJSON cal的url

$.getJSON("https://api.jsonbin.io/b/58f9f835a3de5638", function(data) {}

file://localhost
是一个奇怪的组合。你有web服务器吗?我有,而且它在网上工作得很好,但我正在一栋没有互联网接入的大楼里用这个网站做一个演示(我知道这很疯狂),因此我提出了这个问题。首先,我相信本地文件会因不同的来源而导致安全异常。除此之外,我不知道您的
file://localhost
来自。当使用
文件://
http://localhost/...
。我尝试使用完整路径
http://localhost/Users/blakestruhs/new/lib/js/2k11.json
我收到了相同的错误。有没有办法解决这里的安全问题?我确实做了此更改,但仍然收到相同的错误<代码>XMLHttpRequest无法加载http://localhost/Users/blakestruhs/new/lib/js/2k11.json. Access Control Allow Origin不允许Origin null。对安装在OS X上的easy Web服务器有什么建议?@Alexander:或Zend Community server,但它有点复杂:在晚上结束时(这里是4:30,我的演示是9:30),Web服务器是唯一的解决方案。谢谢你的帮助@亚历山大:现在是下午0:50。。。我很高兴能帮助你;)
$.getJSON("https://api.jsonbin.io/b/58f9f835a3de5638", function(data) {}