使用Flickr的JSON输出显示搜索图像

时间:2017-04-30 05:40:20

标签: javascript jquery json rest flickr

我需要通过JSON请求在我的网站上显示图像。

我有JSON:

https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=6a970fbb976a06193676f88ef2722cc8&text=sampletext&sort=relevance&privacy_filter=1&safe_search=1&per_page=5&page=1&format=json&nojsoncallback=1

我有将照片网址放入的格式: https://www.flickr.com/services/api/misc.urls.html

但我不知道如何循环,我发现了一些相似的例子,但我仍然无法看到我需要的东西。

我使用JavaScript / jQuery来提取信息。

我想我会循环播放。

CurrentPhotoUrl = 'https://farm'+CurrentPhotoFarm+'.staticflickr.com/'+CurrentPhotoServer+'/'+CurrentPhotoId+'_'+CurrentPhotoSecret+'_n.jpg'

但是每个变量都需要使用元素中的值填充。我需要循环遍历JSON中的所有5个元素。

非常感谢有关如何创建此循环的任何帮助。

3 个答案:

答案 0 :(得分:1)

试试此代码

var n = JSON.parse(x)  //x is the json returned from the url.
var _s = n.photos.photo;
for(var z = 0 ; z < n.photos.photo.length ; z++)
{
   var CurrentPhotoUrl = 'https://farm'+_s[z]['farm']+'.staticflickr.com/'+_s[z]['server']+'/'+_s[z]['id']+'_'+_s[z]['secret']+'_n.jpg'
   console.log(CurrentPhotoUrl);  
} 

编辑(使用实际的JQUERY AJAX调用)

    var n ='';
 $.ajax({url: "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=6a970fbb976a06193676f88ef2722cc8&text=sampletext&sort=relevance&privacy_filter=1&safe_search=1&per_page=5&page=1&format=json&nojsoncallback=1", success: function(result){

        console.log(result);
        n = result;
        var _s = n.photos.photo;
        for(var z = 0 ; z < n.photos.photo.length ; z++)
        {
           var CurrentPhotoUrl = 'https://farm'+_s[z]['farm']+'.staticflickr.com/'+_s[z]['server']+'/'+_s[z]['id']+'_'+_s[z]['secret']+'_n.jpg'
           console.log(CurrentPhotoUrl);  
        }  


    }});

输出:

https://farm8.staticflickr.com/7198/6847644027_ed69abc879_n.jpg https://farm3.staticflickr.com/2517/3905485164_84cb437a29_n.jpg https://farm1.staticflickr.com/292/32625991395_58d1f16cea_n.jpg https://farm9.staticflickr.com/8181/7909857670_a64e1dd2b2_n.jpg https://farm9.staticflickr.com/8143/7682898986_ec78701508_n.jpg

答案 1 :(得分:1)

此答案假设您的json数据不会更改。因此,在.js文件中,将json设置为变量。

var json = <paste json here>;
// the photos are inside an array, so use forEach to iterate through them
json.photos.photo.forEach((photoObj) => {
    // the photo will render via an img dom node
    var img = document.createElement('img');
    var farmId = photoObj.farm;
    // you can fill out the rest of the variables ${} in the url
    // using the farm-id as an example
    img.src = `https://farm${farmId}.staticflickr.com/${serverId}/${id}_${secret}.jpg`
    // add the image to the dom
    document.body.appendChild(img);
}

在包含基本html模板的html文件中,通过脚本标记加载此javascript文件,或者将其粘贴到脚本标记内。

如果你想从网页获取 json并假设你已经加载了jquery脚本......

$.ajax({
        type: 'GET',
        url: <flicker_url_for_json>,
        success: (response) => {
            // iterate through json here
        },
        error: (error) => {
            console.log(error);
        }
    });

答案 2 :(得分:0)

我不确定这是否是最佳解决方案,但它是有人建议的并且有效。

const requestURL = 'https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=6a970fbb976a06193676f88ef2722cc8&text=sampletext&sort=relevance&privacy_filter=1&safe_search=1&per_page=5&page=1&format=json&nojsoncallback=1'

$.ajax(requestURL)
  .done(function (data) {
    data.photos.photo.forEach(function (currentPhoto) {

      console.log('https://farm'+currentPhoto.farm+'.staticflickr.com/'+currentPhoto.server+'/'+currentPhoto.id+'_'+currentPhoto.secret+'_n.jpg')

    })
  })

Varun的解决方案也适合我。我不知道哪一个更好,但我想我也会发布这个,因为它看起来完全不同。