2011-01-13 1 views
0

Я до сих пор довольно новичок в AJAX, и я экспериментирую с Twitter и Flickr. Twitter работает до сих пор, но я столкнулся с некоторыми проблемами с API Flickr.Результаты поиска не возвращаются при использовании запроса Flickr JSON

У меня нет никаких результатов. Кажется, что URL-адрес работает нормально, и я указываю на правильный объект, содержащий массив («элементы»). Может ли кто-нибудь сказать мне, что я делаю неправильно, пожалуйста? Благодаря!

 $('#show_pictures').click(function(e){ 
    e.preventDefault(); 
    $.ajax({ 
     url: 'http://api.flickr.com/services/feeds/photos_public.gne?format=json&tags=home&nojsoncallback=1', 
     dataType: 'jsonp', 
     success: function(data) { 
     $.each(data.items, function(i, item){ 
      $('<div></div>') 
      .hide() 
      .append('<h1>'+item.title+'</h1>') 
      .append('<img src="'+item.media.m+'" >') 
      .append('<p>'+item.description+'</p>') 
      .appendTo('#results') 
      .fadeIn(); 
     }) 
     }, 
     error: function(data) { 
     alert('Something went wrong!'); 
     } 
    }); 
    }); 

EDIT: Я изменил URL и я получаю сообщение об ошибке назад в FireFox: «Invalid метка», относительно «название» объекта в корневой области.

ответ

0

Постарайся комментируя это:

$('<div></div>') 
     .hide() 
     .append('<h1>'+item.title+'</h1>') 
     .append('<img src="'+item.media.m+'" >') 
     .append('<p>'+item.description+'</p>') 
     .appendTo('#results') 
     .fadeIn(); 

И вобще

console.log(data); 

, если вы используете поджигатель (который вы, вероятно, должно быть) или

alert(data); 

Что скажет вы, если ваш запрос возвращает данные. FYI, я запустил завиток на вашем URL, и он возвращает кучу json.

+0

К сожалению, я не верну никаких данных. Так странно. Теперь я изменил URL-адрес на http://api.flickr.com/services/feeds/photos_public.gne?format=json&tags=home&jsoncallback=?&nojsoncallback=1, поэтому я могу избавиться от "(" и ") «персонажи в JSON ... но это, похоже, не помогает. – Martijn1981

0

Использует ли dataType: 'json' вместо dataType: 'jsonp' в какой-то степени разница?

+0

В том смысле, что объект «ошибка» моего вызова $ .ajax неожиданно отображается: P. Но кроме того, нет. Все еще не отображается никаких изображений. – Martijn1981

0

«Недопустимая метка» относится к метке из пар значений метки, которые ожидает интерпретатор. Она может быть решена, как так

http://willcode4beer.com/tips.jsp?set=jsonInvalidLabel

В качестве альтернативы вы можете передать jsoncallback =? для возвращаемого json, который будет обернут этими скобками.

+0

А я пробовал это, но он тоже не работает. – Martijn1981

+0

Вот и все, спасибо! – Martijn1981

1

Похоже, проблема была в URL. По-видимому, jQuery всегда нужен параметр обратного вызова и обычно добавляет «callback =?». Однако, поскольку Flickr использует «jsonpCallback» в качестве имени для параметра, мне пришлось изменить URL-адрес:

http://api.flickr.com/services/feeds/photos_public.gne?format=json&tags=home&jsoncallback=?

И престо, он внезапно работает как шарм!