$ .getJSON无法使用本地JSON文件

我拼命想要获得一个站点的本地构建来获取JSON文件(也是本地的)没有运气。 确切的代码在我的服务器上运行完美,但一旦在本地,就会中断。

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

$.getJSON( "lib/js/app.json", function(data){ $.each(data, function(i,user){ +' }); } ); 

并收到此控制台错误:

 XMLHttpRequest cannot load file://localhost/Users/blakestruhs/new/lib/js/app.json. Origin null is not allowed by Access-Control-Allow-Origin. 

我在这里想要一个答案。 请帮我。

我认为你使用像chrome这样的Webkit浏览器,对吧? Chome看不到两个本地文件之间的关系。 使用Firefox或在网络服务器上运行;)

Chrome中的“Access-Control-Allow-Origin”不允许“原点为null”。 为什么?

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

跨域投诉是它将每个文件视为不同的域,因此您需要在Web服务器中运行它。

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

Chrome不允许对本地文件进行ajax调用。 请参阅此

XmlHttpRequest不允许跨域。

如果您需要在本地PC上进行演示,请将Web应用程序设置为在本地Web服务器上运行,并将json源返回为同一Web应用程序。

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

我想如果你访问使用IP地址调用getJSON的页面然后使用ip地址而不是localhost作为json文件,实际上它们属于同一个域,它应该工作

对于支持它的浏览器(包括Chrome),您可以使用FileReader API,而不是使用getJSON。

 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或Blob对象。 获得一个的最简单方法是让用户从文件输入元素中选择它。 如果您需要在不询问用户的情况下阅读文件,可以查看: https : //stackoverflow.com/a/30896068/2476389

你应该使用http://localhost over file://localhost ;

 $.getJSON( "http://localhost/Users/blakestruhs/new/lib/js/app.json", function(data){ $.each(data, function(i,user){ +' }); } );