如何从flickr API获取正确的JSON对象

ank*_*itr 14 javascript jquery json flickr angularjs

我使用flickr照片搜索方法来检索公共照片.当我用jquery运行它,它工作正常,我得到正确形式的json对象.

{
    "photos": {
        "photo": [
            {
              .........
            }
        ]
    },
    "stat": "ok"
}
Run Code Online (Sandbox Code Playgroud)

但是当我将它与AngularJs一起使用时,我得到了带有前缀jsonFlickrApi的相同对象

jsonFlickrApi({
    "photos": {
        "photo": [
            {
               ...... 
            }
        ]
    },
    "stat": "ok"
})
Run Code Online (Sandbox Code Playgroud)

我在AngularJs中使用的是:

myApp.service('dataService', function($http) {
    delete $http.defaults.headers.common['X-Requested-With'];
    this.flickrPhotoSearch = function() {
        return $http({
            method: 'GET',
            url: 'https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=3f807259749363aaa29c2fa93945&tags=india&format=json&callback=?',
            dataType: 'json'
         });
     }
});
Run Code Online (Sandbox Code Playgroud)

请告诉我如何将第二个JSON转换为第一个JSON.我可以在$http调用中做什么或者必须改变JSON对象.

ank*_*itr 22

网址有问题.这个网址对我有用.

https://api.flickr.com/services/rest/?method=flickr.people.getPublicPhotos&api_key=3f807259749363aaa29c712fa93945&user_id=61495424@N00&format=json&nojsoncallback=?
Run Code Online (Sandbox Code Playgroud)


max*_*age 12

你必须在网址中添加nojsoncallback = 1,就像这样

https://api.flickr.com/services/rest/?method=flickr.photos.getRecent&api_key=XXX&format=json&nojsoncallback=1
Run Code Online (Sandbox Code Playgroud)

并在响应时删除jsonFlickrApi函数.


Ala*_*rpa 6

上面说添加的答案nojsoncallback=1是正确的,但我想提供更多的上下文和背后的推理。

如果你看一下文档(我认为它的格式很差):https : //www.flickr.com/services/api/response.json.html并一直滚动到底部你会发现,藏起来离开:

Callback Function
If you just want the raw JSON, with no function wrapper, add the parameter nojsoncallback with a value of 1 to your request.

To define your own callback function name, add the parameter jsoncallback with your desired name as the value.

nojsoncallback=1    -> {...}
jsoncallback=wooYay -> wooYay({...});
Run Code Online (Sandbox Code Playgroud)

关键部分是:如果您只想要原始 JSON,没有函数包装器,请将值为 1 的参数 nojsoncallback 添加到您的请求中

因此,将此添加到您的请求中,它将删除jsonFlickrAPI您在响应中看到的包装器:nojsoncallback=1