Javascript AngularJS don’;无法获取JSON数据

Javascript AngularJS don’;无法获取JSON数据,javascript,json,angularjs,Javascript,Json,Angularjs,我想通过使用AngularJS的$http.get从JSON文件获取数据。 我使用“新方法”编写AngularJS脚本() 什么都没发生,萤火虫什么都没告诉我 我想问题出在我的activate()函数代码中,我真的不理解承诺 function activate() { return $http.get('test.json').then(function(data) { vm.result = data; return vm.result; })

我想通过使用AngularJS的
$http.get
从JSON文件获取数据。 我使用“新方法”编写AngularJS脚本()

什么都没发生,萤火虫什么都没告诉我

我想问题出在我的
activate()
函数代码中,我真的不理解承诺

function activate() {
    return $http.get('test.json').then(function(data) {
        vm.result = data;
        return vm.result;
    });
} 

你知道这一点吗?

你无法在
回调中返回
,然后返回
。只需返回
$http
调用本身,这将是一个承诺,并解决它。另外,您的控制台应该告诉您类似
$http未定义的内容,因为您没有正确注入此服务。注意以下几点

function activate() {
    return $http.get('test.json')
}

[...]

activate().then(function(response) {
    vm.result = response.data;
});
-演示


旁注-您可能希望将
activate()
包装到一个可重用的服务中,以将此逻辑排除在控制器之外,因此我们将把定义的服务注入
controller
而不是直接注入
$http


-demo将此逻辑包装在一个简单的服务中

我发现了几个问题

首先,在plunker代码中,您有:

controller.$inject = ["$http"];

function controller() {
控制器函数签名中缺少$http参数

function controller($http) {

一旦我修复了这个问题,我发现index.html页面绑定到了
{{c.value}}
,但您的控制器从未定义值属性。也许这应该是
{{c.result}}
?如果我做了这些更改,我会得到一个可见的结果。

vm.result=response.data谢谢,谢谢你额外的完整回复:)但我认为$http没有正确实现,因为Firebug告诉我“TypeError:href为null”,我看到这是一个Firebug的bug,当$http有错误时出现。但是为什么它在Plunker上工作而在我的电脑上不工作呢?这很奇怪。您的工作副本和plunker示例还有什么不同?@Carapatte您在这方面有什么进展吗?我的答案能帮到你吗?是的,谢谢,但我认为它不起作用,因为我需要一些服务器来运行$http(就像克莱弗利斯所说的)。如果你正在寻找“为什么这不起作用?”,那么这应该能帮到你。如果您想了解更多关于如何编写遵循John Papa的社区贡献风格指南的代码的信息,那么您可能需要在上发布。在编写此代码时,您肯定会在样式指南中遗漏一些要点,但我认为这是一个快速组合,试图找出这一切是如何工作的。FWIW,您可以使用
[CodeReview.SE]
自动解析链接。没问题,它也适用于其他网站
[Programmers.SE]
等:)谢谢,经典错误和好建议:)但是,正如您在我对scniro响应的评论中所看到的,$http://您的web服务器是否配置为服务
.json
静态文件?在IIS中,这需要添加到“已知mime类型”部分。检查您使用的任何web服务器是否已配置
我不确定是否使用web服务器,我只有一个.html页面、一个.js页面和一个.json页面。我认为这里面没有服务器。所以你使用FireFox的本地文件夹已经用完了。我认为在这种情况下,引擎盖下的
$http
ajaxapi可能无法正常工作,因为我知道其中涉及任何
XMLHttpRequest
。哦,好吧,所以我必须做一些XMLHttpRequest。您的意思是“怀疑”吗?正确为了使用$http,您需要某种web服务器来为您的文件提供服务。请原谅我的英语:)