AngularJS $ http.get无法使用外部域json数据

时间:2015-08-29 04:20:53

标签: javascript json angularjs

我正在尝试使用angularjs从外部域中提取数据。我在控制台中没有看到任何问题。我尽力而为fiddled here。任何帮助或指针都会很棒。

Vie Code

<div ng-controller="myCtrl">{{response}}
    <button ng-click="getData()">GET Request</button>
</div>

控制器代码

angular.module('myApp', [])
    .controller('myCtrl', function ($scope, $http) {
    $scope.getData = function () {
        $http.get("http://api.openweathermap.org/data/2.5/weather?zip=98007,us").success(function (response) {
            $scope.myData = response;
            console.log(response)
        });
    };
});

4 个答案:

答案 0 :(得分:2)

您的代码很好,但您在标记中遗漏了一些内容。您遗失了ng-app,而您应该{{myData}}而不是{{response}}(因为myData绑定到您的范围并分配给response,所以没有变量命名response绑定到您的范围)。见plunker

  <body ng-app="myApp">
    <div ng-controller="myCtrl">{{myData}}
        <button ng-click="getData()">GET Request</button>
    </div>
  </body>

答案 1 :(得分:1)

使用浏览器开发工具网络标签显示什么?请求是否成功,甚至提出了请求?

答案 2 :(得分:1)

只需在正文或html

中添加ng-app即可

通过查看你的jsFiddle明确表示你的问题是你没有在你的html中添加应用名称。

以下是您的更新jsFiddle:http://jsfiddle.net/kn4yaoco/3/

您可以在控制台中看到您的请求正在正确回复。

答案 3 :(得分:0)

您应.then使用$ http,例如:

$http.get("http://api.openweathermap.org/data/2.5/weather?zip=98007,us")
  .then(function(response) {
     console.log(response);
  }):

最佳