Angularjs http.get失败(但我看到数据被返回)

kur*_*ele 6 javascript angularjs

我正在通过Angularjs手机教程,并希望从远程服务器获取手机JSON.

$http.get('http://myserver.com/phones.json').success(function(data) {
    $scope.phones = data;
});
Run Code Online (Sandbox Code Playgroud)

由于CORS失败了,我发送的是OPTIONS而不是GET请求,所以我将第一行添加到控制器

delete $http.defaults.headers.common['X-Requested-With'];    
Run Code Online (Sandbox Code Playgroud)

我现在可以在Charles中看到,正在向myserver.com发出GET not OPTIONS请求,并且电话JSON在响应中.但http.get仍然失败,状态为0,'data'为空.

不知道下一步该尝试什么.任何见解都表示赞赏.

Stu*_*son 2

它不应该发出 GET 的 OPTIONS 请求,所以这听起来是正确的。我想你想做的是:

\n\n
$http.get(\'http://myserver.com/phones.json\').then(function(data) {\n  $scope.phones = data;\n}, function(err) { alert(\'Oh no! An error!\'});\n
Run Code Online (Sandbox Code Playgroud)\n\n

我认为你想使用then(),它接受两个函数作为参数 \xe2\x80\x94 第一个表示成功,第二个表示错误。$http.get()返回一个由 执行的承诺then()

\n\n

另外,您可能想使用$resource而不是$http. 它提供了更高级别的抽象,并允许更可重用的样式,http://docs.angularjs.org/api/ngResource .$resource

\n\n

编辑:

\n\n

在这里查看角度调试工具。它向您显示范围中可用的内容,并显示性能数据。

\n