2013-07-03 2 views
0

Я пытаюсь получить простой запрос JSON, работающий с jQuery. Я хочу получить премьеры новых шоу от Trakt (API: http://trakt.tv/api-docs/calendar-premieres), но не может перемещаться по узлам. Похоже, мне может понадобиться дата, прикрепленная после ключа API в URL-адресе, но я не уверен, поскольку дело с JSON для меня совершенно новое.Очень простой запрос JSON с jQuery

$.ajax({ 
     type: "GET", 
     url: [url_with_actual_api_key], 
     dataType: "json", 
     async: true, 
     cache: false, 
     success: function(data){ 
     $.each(data, function(data, value) { 
      $(".title").append("<div class='item'><span>Title:</span>" + value.title + "</div>"); 
     }); 
     } 

Я получаю UNDEFINED конечно, потому что я пытаюсь получить «глубже» данные несколько уровней. Кроме того, value.episode ничего не показывает, получив название, самое близкое мне. Мой вопрос: как я могу получить все данные из запроса для каждого эпизода по дате API?

Большое спасибо и миллион первобытных людей.

+0

«но не может перемещаться по узлам» --- что это значит? – zerkms

+0

Таким образом, данные 'data' выглядят как * Пример запроса * в [связанных API-документах] (http://trakt.tv/api-docs/calendar-premieres)? (или вы использовали параметр 'date', и они опустили массив-обертку?) – Bergi

+0

Я не использовал параметр данных, потому что я не сомневаюсь, как это сделать или действительно мне нужно. Я не получаю никаких данных, кроме «undefined». Когда я использую http://trakt.tv/api-docs/shows-trending для URL с тем же кодом (value.title), я могу получить заголовок. Я немного смущен и потерян. – Zrth

ответ

1

Вам нужно дважды повторять, так как у вас есть массив date, содержащий массив episodes:

success: function(data){ 
    // for each date 
    $.each(data, function(index, broadcastDate) { 

     // broadcastDate.date has the date 
     // broadcastDate.episodes has the show data. 

     $.each(broadcastDate.episodes, function(index,episode) { 

      // episode contains show and episode objects 

      $(".title").append("<div class='item'><span>Title:</span>" + episode.show.title + "</div>"); 
     }); 
    }); 
+0

Спасибо, это работает. Кроме того, странно, что возвращаются только первые пары элементов, а не все данные. Любые идеи, почему это может произойти? – Zrth

+0

Я не могу установить это и запустить его, поскольку у меня нет ключа API. Я предполагаю, что у вас есть доступ к инструментам разработчика Firebug или Chrome. Если да, проверьте входящие данные, пройдите через код (возможно, что-то не так с моей функцией или какое-то неожиданное условие), убедитесь, что выход идет туда, где вы думаете. Это базовый отладочный материал. –

Смежные вопросы