2010-03-25 15 views
13

intentar adaptar el ejemplo $ .getJSON Flickr:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", 
    function(data){ 
    $.each(data.items, function(i,item){ 
     $("<img/>").attr("src", item.media.m).appendTo("#images"); 
     if (i == 3) return false; 
    }); 
}); 

para leer desde el método de la API REST flickr.photos.search, pero la respuesta JSON es diferente para esta llamada.

Esto es lo que he hecho hasta ahora:

var url = "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=YOURAPIKEYHERE&tags=yokota+air+base&safe_search=1&per_page=20"; 
var src; 
$.getJSON(url + "&format=json&jsoncallback=?", function(data){ 
    $.each(data.photos, function(i,item){ 
     src = "http://farm"+ item.photo.farm +".static.flickr.com/"+ item.photo.server +"/"+ item.photo.id +"_"+ item.photo.secret +"_m.jpg"; 
     $("<img/>").attr("src", src).appendTo("#images"); 
     if (i == 3) return false; 
    }); 
}); 

supongo que no estoy construyendo la imagen src correctamente. No se pudo encontrar ninguna documentación sobre cómo crear la imagen src, en función de lo que es la respuesta JSON. ¿Cómo se analiza una llamada a la API REST de flickr.photos.search?

Respuesta

25

No importa, lo tengo. Para aquellos que estén interesados, se analiza de esta manera:

var url = "http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=YOURAPIKEYHERE&tags=yokota+air+base&safe_search=1&per_page=20"; 
var src; 
$.getJSON(url + "&format=json&jsoncallback=?", function(data){ 
    $.each(data.photos.photo, function(i,item){ 
     src = "http://farm"+ item.farm +".static.flickr.com/"+ item.server +"/"+ item.id +"_"+ item.secret +"_m.jpg"; 
     $("<img/>").attr("src", src).appendTo("#images"); 
     if (i == 3) return false; 
    }); 
}); 

Aviso del .photo se trasladó a la firma del método $ each.

+1

Gracias a un millón. Me salvó las edades de trabajo. – frostymarvelous

+0

sin preocupaciones, me alegro de poder ayudar. – Chaddeus

+0

Con este método, su clave API queda expuesta. ¿Tiene alguna preocupación/protección al respecto? – yoshyosh

5

Esto podría simplificarse mediante la elección del 'url_m' extras de parámetro y su per_page ...

extras=url_m&per_page=4 

Entonces todo lo que necesita es este dentro del bucle ...

$("<img/>").attr("src", item.url_m).appendTo("#images"); 
3

Para acceder la API de Flickr debe utilizar https: //:

var url = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=YOURAPIKEYHERE&tags=yokota+air+base&safe_search=1&per_page=20"; 
var src; 
1

la documentación de la API jQuery para jQuery .getJSON() tiene un ejemplo útil aquí: http://api.jquery.com/jquery.getjson/

La documentación proporciona un archivo completo como un ejemplo de cómo analizar la llamada API; carga las cuatro imágenes más recientes de Mount Rainier de la API Flickr JSONP. Voy a volver a imprimir el archivo aquí como un contexto adicional que podría ser útil, especialmente para los nuevos en el uso de API.

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>jQuery.getJSON demo</title> 
    <style> 
    img { 
    height: 100px; 
    float: left; 
    } 
    </style> 
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<div id="images"></div> 

<script> 
(function() { 
    var flickerAPI = "http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?"; 
    $.getJSON(flickerAPI, { 
    tags: "mount rainier", 
    tagmode: "any", 
    format: "json" 
    }) 
    .done(function(data) { 
     $.each(data.items, function(i, item) { 
     $("<img>").attr("src", item.media.m).appendTo("#images"); 
     if (i === 3) { 
      return false; 
     } 
     }); 
    }); 
})(); 
</script> 

</body> 
</html> 
Cuestiones relacionadas