2016-10-11 3 views
1

Попытка сделать вызов API.AngularJS API call

var app = angular.module("testApp", []); 
app.controller("mCtrl", ["$scope", "$http", function($scope, $http) { 
    $http.jsonp("api.openweathermap.org/data/2.5/weather?q=London,uk&APPID={APIKEY}") 
     .success(function(data) { 
      $scope.data = data; 
      console.log($scope.data); 

     }); 
}]); 

Продолжайте получать ответ 404. Однако я могу получить доступ к данным при использовании адреса в браузере.

+0

Это может быть полезно http://stackoverflow.com/questions/12066002/parsing-jsonp-http-jsonp-response-in-angular-j s –

+0

Вам просто не хватает 'http: //' в URL запроса? Проверьте инструменты отладчика браузеров (вкладка net/network), чтобы узнать, куда идет этот запрос. Моя ставка будет заключаться в том, что он рассматривает его как относительный URL-адрес локального сервера/домена. – AndrewR

+0

Вы забыли 'http: //'. Кроме того, вы, вероятно, должны удалить свой ключ API из общедоступных страниц. – RPGillespie

ответ

1

Во-первых, вы должны использовать $http.get('...') вместо $http.jsonp('...')

И второе, вы забыли добавить 'http://...' на маршрут

Правильный путь

$http.get("http://api.openweathermap.org/data/2.5/weather?q=London,uk&APPID=d21b99023992fadfa586d8c3589d0b8d") 
    .then(function(data) { 
    $scope.data = data; 
    console.log($scope.data); 
    }); 

Я проверил его, он должен работать

+0

Работал, да, но почему бы не jsonp? – Znowman

+0

В то время как вы можете технически использовать его, это больше хлопот, и вам нужен только простой доступ, [документация] (https://docs.angularjs.org/api/ng/service/$http#jsonp) рассказывает вам, как но не стоит того. – Mockingguy