Создайте URL из фида JSON - PullRequest
       12

Создайте URL из фида JSON

1 голос
/ 04 ноября 2011

Может ли кто-нибудь сообщить мне, что я здесь делаю не так?

Я пытаюсь создать URL изображения, но использую метод flickr.photos.search сейчас (мне нужно отображать картинки, близкие к геолокации посетителя), у меня это было раньше работали с groups_pool.gne, а фид JSON был другим (проще) отформатирован но сейчас ..

URL работает, я получаю массив со всеми необходимыми мне данными (ферма, сервер, секрет и идентификатор), но не может создать URL для фотографии.

$.getJSON("http://api.flickr.com/services/rest/?method=flickr.photos.search&api_\
key=KEY&format=json&privacy_filter=0&media=photos&has_geo=1&accuracy=13&sort=int\
erestingness-desc&content_type=1&per_page=32&extras=geo,owner_name&page=1&radius\
_units=km&radius=1.521739&lat=40.952532&lon=-4.1326349999999366&text=Alcazar&jso\
ncallback=jsonp1320163051486", getJSONimages);

function getJSONimages(data) {
  var htmlString = "";

  $.each(data.photos.photo, function(i,item){
    htmlString += '<img src="http://farm'+ item.farm +'.static.flickr.com/'+
      item.server +'/'+ item.id +'_'+ item.secret +'_m.jpg" />';
  });

  $('#slideshow').html(htmlString);

Спасибо.


Я добавил url_m в дополнительные функции, в URL, чтобы получить фид JSON, и я получил полный URL в фиде, и это должно помочь, поскольку мне не нужно объединять остальные, но все равно не работает. 1011 *

Я не могу заставить его работать, и это очень расстраивает, потому что я знаю, что это очень просто. Ну, не для меня, очевидно.

Это моя функция после того, как я получу url_m в цикле:

function getJSONimages(data) {
var htmlString = "";
$.each(data.photos.photo, function(i,item){
// var url = (item.url_m).replace("\", "");
htmlString += '<img src="' + item.url_m + '" />';
});
$('#slideshow').html(htmlString);
}

Даже если я использую переменную "url" или нет, тот же результат.

Однако я кое-что заметил.

В ленте используя groups_pool.gne, где я могу вытащить фотографии успешно иду на media.m вот так:

$.each(data.items, function(i,item){
var biggestSize = (item.media.m).replace("_m.jpg", ".jpg");
htmlString += '<img src="' + biggestSize + '" />';

Обратите внимание, что у меня есть предметы, затем носители, а затем м с собственной ценностью! На самом деле элементы. [media: {m: PHOTOURL}].

Где, как и в этом другом фиде JSON с использованием метода flickr.photos.search, у меня есть следующий «путь объекта»: jsonFlickrApi.photos.photo [{url_m: PHOTOURL}]

И попробуйте использовать этот цикл:

$.each(data.photos.photo, function(i,item){
htmlString += '<img src="' + item.url_m + '" />';

Я думаю, что это моя проблема, но у меня нет никаких идей как подойти к . Это очевидно, что между двумя каналами существует разная структура:

предметов. [Media: {m: PHOTOURL}] photos.photo [{url_m: PHOTOURL}]

Я собираюсь больше изучить петли jQuery. Есть идеи?

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Странно, эти документы не упоминают о получении фермы.Можете ли вы console.log свой элемент в цикле $ .each и посмотреть, что вы получите?http://www.flickr.com/services/api/flickr.photos.search.html

Это явно правильный формат URL, хотя предполагается, что вы получите все эти фрагменты: http://www.flickr.com/services/api/misc.urls.html

РЕДАКТИРОВАНИЕ Можете ли вы сказать мне, что это говоритокно оповещения):

$.each(data.photos.photo, function(i,item){
  var url = 'http://farm'+ item.farm +'.static.flickr.com/' + item.server +'/'+ item.id +'_'+ item.secret +'_m.jpg';
  alert(url);
});
0 голосов
/ 04 ноября 2011

URL не является объектом JSON, поэтому вы не можете его проанализировать.Вы пытаетесь получить параметры URL.Включите следующую функцию и используйте ее следующим образом:

lat = querySt('lat');
lon = querySt('lon');


function querySt(ji) {

    hu = window.location.search.substring(1);

    gy = hu.split("&");

        for (i=0;i<gy.length;i++) {

            ft = gy[i].split("=");

            if (ft[0] == ji) {

            return ft[1];

        }

    }

}

Вы можете изменить эту часть

hu =window.location.search.substring(1);

на

hu = yourURLVariable;

, если вы получаетеURL откуда-то еще.

...