Вызов / Выбор определенного элемента в данных Json

#javascript #jquery #ajax #json #api

#javascript #jquery #ajax #json #API

Вопрос:

Я работаю над личным проектом jQuery / ajax / json, и я пытаюсь собрать данные из TMDB API. Где я хочу, чтобы люди искали определенный термин, например, фильм «Бойцовский клуб». Что должно произойти, так это увидеть постер фильма, который соответствует введенному названию фильма.

Я получил это до сих пор:

$.ajax({ тип: «GET», тип данных: «jsonp», кэш: false, url: » https://api.themoviedb.org/3/search/movie?api_key=257654f35e3dff105574f97fb4b97035amp;query=fight club«, успех: toonTMDBresults // при успешном выполнении запустите функцию toonTMDBResults });

         function toonTMDBresults(tmdbJson) {

                console.log('TMDB:', tmdbJson);
                if ( 1 == 1 ) { // if 1 equals 1, so always run the following code... :)
                    for (var idx in tmdbJson.data) { //loop through the results
                        var results = tmdbJson.data[idx];
                        console.log(results);


                       console.log(results.results[0].id);  //take the ID of the first result in the array


                    }
                } else {
                    console.log('problem with the TMDB request:', json.meta.code);
                }
  

Чего я хотел, так это чтобы я видел идентификатор фильма в своей консоли. Если я смогу это сделать, я смогу выбрать poster_path из данных json и показать постер фильма в моем html.

Но проблема в том, что я не получаю идентификатор в своей консоли, как я просил, поэтому я делаю что-то не так.

Спасибо,

Отметить

Ответ №1:

tmdbJson.data не существует. Возвращаемый объект является :

 TMDB: Object {page: 1, results: Array[10], total_pages: 1, total_results: 10}
  

Вы, вероятно, имели в виду повторение tmdbJson.results . Это рабочая версия вашей функции:

 function toonTMDBresults(tmdbJson) {

            console.log('TMDB:', tmdbJson);
            console.log('first id: ', tmdbJson.results[0].id);
            console.log('first poster path: ', tmdbJson.results[0].poster_path);
            if ( 1 == 1 ) { // if 1 equals 1, so always run the following code... :)
                for (var idx in tmdbJson.results) { //loop through the results
                    var results = tmdbJson.results[idx];
                    console.log(results);


                   console.log(results.id);  //take the ID of the first result in the array


                }
            } else {
                console.log('problem with the TMDB request:', json.meta.code);
            }
}
  

Комментарии:

1. Большое спасибо 🙂 Теперь я пытаюсь сделать то же самое, но только для первого poster_path. Но console.log(results[1].poster_path); похоже, не работает. Как мне восстановить только 1 результат вместо 10 результатов? (10 = по умолчанию).

2. Я добавил пример (перед if) печати первого идентификатора и poster_path. Имейте в виду, что в javascript массивы начинаются с индекса 0, а не 1. Также имейте в виду, что results переменная, которую мы определили, относится к одному фильму. Чтобы самостоятельно поработать с одним фильмом, посмотрите на пример. Вам нужно получить доступ к tmdbJson.results и создать его субиндекс.

3. большое спасибо. Теперь это работает. Теперь я пытаюсь создать div и поместить туда изображение фильма. пытаюсь использовать это: $(‘#posterarea’).append(‘image.tmdb.org/t/p/w500 /’ posterpath); Но это не работает. Даже когда я пишу это: <img src=»image.tmdb.org/t/p/w500/hpt3aa5i0TrSAnEdl3VJrRrje8C.jpg «id=»posterarea» /> Я получаю сообщение об ошибке: Users/Mark/Desktop/twitter/image.tmdb.org/t/p/w500/hpt3aa5i0TrSAnEdl3VJrRrje8C.jpg net::ERR_FILE_NOT_FOUND Что странно, потому что если вы перейдете по этому URL, вы действительно увидите правильное изображение.

4. вы забыли http 🙂 если вы его не укажете, путь будет относительно вашего сайта. Это должно быть <img src=» image.tmdb.org/t/p/w500/hpt3aa5i0TrSAnEdl3VJrRrje8C.jpg » id=»posterarea» />

5. Да, это сработало, спасибо 🙂 Но когда я пытаюсь поместить туда изображение из данных json, этого не происходит. Я думаю, что я сделал что-то не так. Я создал div с <img src=»#» />. И поэтому добавьте правильный URL, я сделал это в jQuery: $(‘#posterarea’ > ‘<img />’).append(‘ image.tmdb.org/t/p/w500 ‘ posterpath); Я больше не знаю, как добавить два элемента в часть $ (…). Например, <img> в div «posterarea».