2014-10-30 139 views
29

我是angularjs的新手,我一直在网上搜索一整天,只是为了从本地json文件中获取数据而不必为本地web应用使用本地主机。不幸的是,我还没有找到任何。我尝试使用$ http.get,但我得到Cross Origin *错误。Angularjs访问本地json文件

是否有其他方式可以从本地json文件中获取数据,而无需在本地托管我的webapp?

angularjs是否有任何其他函数从本地json文件获取数据而不必使用其$ http.get?

+1

我没有得到你建议的链接的相关性。我已经知道了。我只问Angularjs是否有能力读取像vanillajs的jsonp.fetch(url)函数那样的本地JSON文件。 – Jibo 2014-10-31 02:06:00

+0

你所有的(@ Re-l,@ivarni,@ Second Rikudo)建议重复与这个问题似乎没有关系。 我的理解是,这个问题与使用'Angular.JS' **框架**的方法有关。 Angular.JS仍然是JavaScript,但有自己的方法,可能与**原生JavaScript **不同。 – 2014-10-31 02:31:38

+0

@JennyCasarino Angular是Javascript。它受适用于Javascript的相同规则的限制。如果你不能在Javascript中做某些事情,那么你不能在Angular中做。它涉及到沙箱时,它不会与本地JavaScript有所不同。 – ivarni 2014-10-31 05:11:11

回答

5

您需要将您的应用程序部署到某个http服务器,最简单的方法是使用节点,这里是示例https://www.npmjs.org/package/http-server,或者您可以更改浏览器的安全设置。

+0

但这仍然意味着我会在本地托管它。正在开发的webapp需要json在本地,这样当没有互联网连接时,我仍然可以看到某些东西。本地方写这个json文件。这是一种混合类型的应用程序。 – Jibo 2014-10-30 10:13:35

+0

这是Chrome扩展吗?有问题,你不能从本地系统加载文件,如果你加载文件与用户交互,你可以进行文件输入,所以用户可以加载该json,或将值存储到本地存储,这将是一个很大的安全问题。 – Grissom 2014-10-30 10:24:14

+0

所以不像普通的老js。 angularjs没有任何像jsonp.fetch(url)的地方,我可以从本地json文件中获取数据? – Jibo 2014-10-30 10:33:03

30

你可以参考JSON文件称他们与GET方法,像这样:

$http.get('phones/phones.json').success(function(data) { 
    $scope.phones = data; 
}); 

检查official AngularJS tutorial看到你在做什么错。

更新:

对于角度1.6+success方法不再有效而使用then

$http.get('phones/phones.json').then(function(data) { 
    $scope.phones = data; 
}); 

参考源here

+4

我已经试过了。它仍然给我起源*错误 – Jibo 2014-10-30 09:43:33

+0

如果您对代码有疑问,请发布您的代码或编写小提琴。也许你错过了在你的控制器上使用'$ http'。这是一个常见的错误。 – Kutyel 2014-10-30 09:45:51

+0

var app = angular.module(“MyApp”,[]); (“范围”,“$ http”,函数($ scope,$ http) { $ http.get('json/producttable.json')。success(function(数据){ $ scope.mydata = data; }); }] ); – Jibo 2014-10-30 09:55:36