Плейлист YouTube на странице с x-количеством видео

Я хочу отобразить плейлист YouTube, где у меня есть основное/текущее выбранное видео вверху и x-количество видео этого плейлиста под ним.
К сожалению, кажется, что он останавливается внутри функции loadVids прямо перед $.getJSON, но я не могу найти здесь ошибку. (У меня была опечатка в вариантах, являющихся опционами, но здесь проблема не в этом)

HTML:

<div class = "vidcontainer">
    <section id = "video"></section>
    <main class = "video-playlist"></main>
</div>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

JS:

$(document).ready(function () {
    var key = 'myKey';
    var playlistId = 'myPlaylist';
    var URL = 'https://www.googleapis.com/youtube/v3/playlistItems';
    var options = {
        part: 'snippet',
        key: key,
        maxResults: 20,
        playlistId: playlistId
    };
    
    loadVids();

    function loadVids() {
        $.getJSON(URL, options, function (data) {
            var id = data.items[0].snippet.resourceId.videoId;
            mainVid(id);
            resultsLoop(data);
        });
    }
    
    function mainVid(id) {
        $('#video').html(`
            <div class = "responsive-video">
                <iframe src = "https://www.youtube.com/embed/${id}" frameborder = "0" allow = "autoplay; encrypted-media" allowfullscreen></iframe>
            </div>
        `);
    }

    function resultsLoop(data) {
        $.each(data.items, function (i, item) {
            var thumb = item.snippet.thumbnails.medium.url;
            var title = item.snippet.title;
            var desc = item.snippet.description.substring(0, 100);
            var vid = item.snippet.resourceId.videoId;
    
            $('main.video-playlist').append(`
                <varticle class = "item" data-key = "${vid}">
                    <img src = "${thumb}" alt = "" class = "vidthumb">
                    <div class = "details">
                        <h4 style = "float:left;font-size: 20px;font-family: sauna-boldregular;margin-bottom: 16px;">${title}</h4>
                        <p style = "float:left;">${desc}…</p>
                    </div>
                </varticle>
            `);
        });
    }

    // CLICK EVENT
    $('main.video-playlist').on('click', 'varticle', function () {
        var id = $(this).attr('data-key');
        mainVid(id);
        document.getElementById('video').scrollIntoView({
            behavior: 'smooth'
        });
    });
});

Убедитесь, что вы используете правильный API-ключ и правильный идентификатор для playlistId, это выглядит как PL742CF1A8BF939A.

Grumpy 12.05.2022 11:24

Только для этого я сгенерировал новый ключ около 5 раз, а также playlistId был проверен 5 раз. На самом деле этого не может быть:/ Моя консоль говорит: «$.getJSON не является функцией», и я исследовал это, но независимо от того, как я включаю сценарии JQuery, я все равно получаю эту ошибку. На данный момент я не уверен, что мой сценарий неправильный или что-то еще...

Grimclaw Draven 12.05.2022 11:39

Я поэкспериментировал с вашим кодом и заменил ключи своими ключами, и никаких проблем, все заработало нормально. Убедитесь, что вы правильно загрузили jquery. Вот рабочий пример, просто назначьте правильные клавиши. jsfiddle.net/c3pqtek7 @Grimclaw Draven

Grumpy 12.05.2022 12:49

Итак, я изменил свои loadVids на это: function loadVids() { console.info($(".breadcrumb-item")[0]); $.getJSON(URL, параметры, функция (данные) { var id = data.items[0].snippet.resourceId.videoId; mainVid(id); resultsLoop(data); }); } и консоль отвечает моим выбранным элементом и этими двумя ошибками сразу после: "исключение jQuery.Deferred: $.getJSON не является функцией TypeError: $.getJSON не является функцией" "Uncaught TypeError: $.getJSON не является функцией" "

Grimclaw Draven 16.05.2022 11:35

Сейчас я использую этот тег в своем заголовке, поэтому я загружаю его в нужное время:

Grimclaw Draven 16.05.2022 11:40

Скрипка работает с вашими ключами?

Grumpy 16.05.2022 11:56

Да, это так, и я нашел решение сейчас. Мне пришлось скачать текущую версию и включить ее вручную.

Grimclaw Draven 16.05.2022 12:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

При загрузке и включении jQuery вместо использования из внешнего источника проблема исчезла. Загрузите его отсюда и обязательно получите сжатую производственную версию: https://jquery.com/download/.

Другие вопросы по теме