Я хочу отобразить плейлист 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'
});
});
});
Только для этого я сгенерировал новый ключ около 5 раз, а также playlistId был проверен 5 раз. На самом деле этого не может быть:/ Моя консоль говорит: «$.getJSON не является функцией», и я исследовал это, но независимо от того, как я включаю сценарии JQuery, я все равно получаю эту ошибку. На данный момент я не уверен, что мой сценарий неправильный или что-то еще...
Я поэкспериментировал с вашим кодом и заменил ключи своими ключами, и никаких проблем, все заработало нормально. Убедитесь, что вы правильно загрузили jquery. Вот рабочий пример, просто назначьте правильные клавиши. jsfiddle.net/c3pqtek7 @Grimclaw Draven
Итак, я изменил свои 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 не является функцией" "
Сейчас я использую этот тег в своем заголовке, поэтому я загружаю его в нужное время:
Скрипка работает с вашими ключами?
Да, это так, и я нашел решение сейчас. Мне пришлось скачать текущую версию и включить ее вручную.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


При загрузке и включении jQuery вместо использования из внешнего источника проблема исчезла. Загрузите его отсюда и обязательно получите сжатую производственную версию: https://jquery.com/download/.
Убедитесь, что вы используете правильный API-ключ и правильный идентификатор для playlistId, это выглядит как PL742CF1A8BF939A.