不能使用Angular来显示来自flickr的json

时间:2013-12-21 15:30:44

标签: ajax json angularjs flickr

我试图显示我得到的数据时遇到问题。 这是我的代码:

$http({
    method:'get',
    format:'json',
    url:'http://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key=MyAPI&per_page=30&format=json',        
}).success(function(data, status, headers, config){
    $scope.photoID = data;
        alert($scope.photoID)

})

我得到的Json文件:

jsonFlickrApi(
{
photos: {
page: 1,
pages: 34,
perpage: 30,
total: 1000,
photo: [
{
id: "11480313795",
owner: "80249365@N00",
secret: "d4950d1c38",
server: "5482",
farm: 6,
title: "5DM38945",
ispublic: 1,
isfriend: 0,
isfamily: 0
},.....

在这种情况下,它可以在警报窗口中显示整个json文件。 但是,当我想获取某些特定数据(如页面或照片ID)时,它只会在控制台中显示未定义甚至错误。

$http({
        method:'get',
        dataType:'jsonp',
        url:'http://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key=MyAPI&per_page=30&format=json&jsoncallback=?',     
    }).success(function(data, status, headers, config){
            $scope.photoID = data.photos.page;
            alert($scope.photoID);

    })

我可以用Jquery ajax相同的json文件,所以我不知道出了什么问题。 有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

您正在使用$http.get方法。您正在使用的flickr api会返回JSONP格式。这似乎使您的代码无法正常工作。在这种情况下,请查看我的原始答案,以便正确处理此问题。

上一个答案:

$http文档中,您的调用必须包含JSON_CALLBACK子字符串。

你的遗失。

正确的网址应为:

http://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key=MyAPI&per_page=30&format=json&jsoncallback=JSON_CALLBACK

修改

这是一个带有测试用例的plunkr

http://plnkr.co/edit/MUMnHML5QtDJTthmtZ2Y?p=preview

代码:

$http.jsonp("http://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key=KEY&per_page=30&format=json&jsoncallback=JSON_CALLBACK")
.success(function(data) {

  $scope.data = data.photos;

})