При использовании запроса Flickr JSON результаты не возвращаются - PullRequest
0 голосов
/ 13 января 2011

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

Я не получаю результатов обратно. Кажется, что URL работает нормально, и я указываю на нужный объект, содержащий массив ('items'). Кто-нибудь может сказать мне, что я делаю не так, пожалуйста? Спасибо!

      $('#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!');
      }
    });
  });

РЕДАКТИРОВАТЬ: я изменил URL, и я получаю отчет об ошибке в FireFox: «Недопустимая метка», касающаяся объекта «заголовок» в корневой области.

Ответы [ 4 ]

1 голос
/ 13 января 2011

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

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

И вот, вдруг это работает как шарм!

0 голосов
/ 13 января 2011

Имеет ли значение dataType: 'json' вместо dataType: 'jsonp' какая разница?

0 голосов
/ 13 января 2011

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

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

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

0 голосов
/ 13 января 2011

Попробуйте прокомментировать это:

$('<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);

, если вы используете firebug (что вам, вероятно, следует) или

  alert(data);

Это скажет вам, если ваш запрос возвращает данные.К вашему сведению, я запустил curl для вашего URL, и он возвращает кучу json.

...