#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».