Я получаю видеоданные через Ajax из своей БД, и мне нужно загрузить видео YouTube в проигрыватель в обратном вызове Ajax success
.
Вне Ajax onYouTubeIframeAPIReady()
работает нормально. Но внутри Ajax это не работает. Ошибок нет, вроде не срабатывает.
Вот весь мой код:
// HTML
<div id="player"></div>
// JS
var tag = document.createElement('script');
tag.src = 'https://www.youtube.com/iframe_api';
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player, video;
$('.content').on('click', '.view', function() {
video = $(this).data('id');
$.ajax({
type: 'POST',
url: '/scripts/video-view.php',
dataType: 'json',
data: {video_id:video},
success: function(data) {
window.onYouTubeIframeAPIReady = function() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'M7lc1UVf-VE',
playerVars: {
'modestbranding': 1
}
});
}
}
});
});
Любые идеи, почему это не работает в обратном вызове успеха Ajax?
P.S. Причина, по которой мне это нужно через Ajax, заключается в том, чтобы динамически загружать videoId и некоторые playerVars. videoId
— это статическое значение в приведенном выше примере для демонстрационных целей. В реальном времени это динамическое значение, полученное из БД. Кроме того, я тестирую это на реальном сервере, а не на локальном хосте.