2016-04-01 5 views
-3

Я пытаюсь получить некоторые данные в формате JSON по следующему адресу http://www.soe.gr/photos.txt, который создается с Flickr API с помощью следующего Углового кода:Получить данные в формате JSON с API с Угловыми

angular.module('myapp', ['ngResource']). 
controller('MyController', ['$scope', '$resource', function ($scope,$resource) { 
    $scope.photoAPI = $resource("http://www.soe.gr/photos.txt", 
{ callback: "JSON_CALLBACK" }, { get: { method: "JSONP" }}); 
$scope.photos=$scope.photoAPI.get(); 
}]); 

Я использую $resource не быть заблокирован, так как я пытаюсь получить данные из другого домена. Однако, я получаю следующую ошибку: Uncaught ReferenceError: jsonFlickrFeed is not defined.

  • Мой первый вопрос в том, что именно этот вид ввода: jsonFlickrFeed({...})
  • Мой второй вопрос, конечно же, как я могу получить, что вещи свойство выше объекта JSON в моем $ объеме, манипулировать ими и продолжать мой код, так как я застрял! Спасибо

ответ

2

$ ресурс для обработки REST API, даже если его можно переопределить метод GET с JSONP это не имеет никакого смысла, его лучше сделать это с помощью $ HTTP:

var url = "http://www.soe.gr/photos.txt?callback=JSON_CALLBACK"; 
    $http.jsonp(url).then(function(response) { 
    console.log(response.data); 
    }); 

Что такое JSONP : https://en.wikipedia.org/wiki/JSONP

JSONP (JSON with Padding) is a technique used by web developers to overcome the cross-domain restrictions imposed by browsers to allow data to be retrieved from systems other than the one the page was served by.

Его главное его не загружая данные в формате JSON, но загрузить сценарий, где вы можете увидеть вызов функции с JSON данных в качестве параметра - в файле вы можете увидеть jsonFlickrFeed ({...}). Но функция должна существовать. В приложении AngularJS угловое изображение обеспечивает его прозрачность и отправляет сгенерированное имя в запрошенный скрипт вместо параметра JSON_CALLBACK в параметре.

Но здесь ваша конечная точка, вероятно, является просто статическим файлом, а не скриптом, который может обеспечить ответ JSONP с заданной настраиваемой функцией обратного вызова.

Вы можете увидеть его работы здесь - http://jsbin.com/becufenepo/edit?js,console

его URL содержит параметр jsoncallback = JSON_CALLBACK, угловая посылы генерируется имя и сетевой консоли вы можете увидеть запрос на

https://www.flickr.com/services/rest/ ... &jsoncallback=angular.callbacks._0 

И тогда его ответ содержит функцию позвонив по телефону angular.callbacks._0({})

Все это, поэтому основная причина заключается в том, что ваш конец не способен обеспечить jsonp.

+0

Большое вам спасибо за ваш ответ. Однако ваш код в самом начале не работает, так как я получаю следующую ошибку: 'photos.txt? Callback = angular.callbacks._0: 1 Uncaught ReferenceError: jsonFlickrFeed' не определен. Проблема не решена, даже если я delete 'jsonFlickrFeed' –

+0

Как я сказал ниже - это не работает, потому что ваш endpoind не способен предоставить jsonp. в добавленном jsbin вы можете увидеть, как его работа над некоторым тестированием мерцания api –