JQuery $.getJSON - Как разобрать flickr.photos.search вызов REST API?
Попытка адаптировать пример $.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;
});
});
для чтения из метода flickr.photos.search REST API, но ответ JSON отличается для этого вызова.
Это то, что я сделал до сих пор:
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;
});
});
Я думаю, что я не строю изображение src правильно. Не удалось найти документацию о том, как создать изображение src, исходя из того, что ответ JSON. Как вы анализируете вызов API flickr.photos.search API
Ответы
Ответ 1
Nevermind, я понял. Для тех, кто заинтересован, он разбирается так:
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;
});
});
Обратите внимание, что .photo было перенесено на подпись метода $.each.
Ответ 2
Это можно упростить, выбирая параметр дополнительных параметров url_m и per_page...
extras=url_m&per_page=4
Тогда все, что вам нужно, это в цикле...
$("<img/>").attr("src", item.url_m).appendTo("#images");
Ответ 3
Чтобы получить доступ к API Flickr, вы должны использовать 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;
Ответ 4
Документация jQuery API для jQuery.getJSON() содержит полезный пример здесь: http://api.jquery.com/jquery.getjson/
Документация предоставляет полный файл в качестве примера того, как анализировать вызов API; он загружает четыре последних снимка горы Рейнир из API Flickr JSONP. Я буду перепечатывать файл здесь как дополнительный контекст, который может быть полезен, особенно для тех, кто не использует 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>