【问题标题】:Javascript doesn't work on ajax postJavascript 不适用于 ajax 帖子
【发布时间】:2013-02-10 09:31:56
【问题描述】:

我正在使用 Youtube Iframe API 并使用他们的脚本播放器加载正常。但是当我对包含 javascript 代码的 php 文件进行 ajax 调用以运行播放器时,它不会执行。

function get_content(song_id,url,song_title) {
if (song_id == null)
    return;
    document.title = song_title + browser_title_suffix;
    $.get('/ajax/player.php',{song_id:song_id}, function(data) {
        $('#main_content').html(data).css({'opacity':0}).animate({'opacity':1});
        });
        }

/ajax/player.php 包含此代码 - https://developers.google.com/youtube/iframe_api_reference#Loading_a_Video_Player

但是,玩家不会再次这样做。我什至尝试了 player.remove() 但这也没有帮助。

更新 1: 我的 PHP 文件:

var tag = document.createElement('script');
tag.src = "//www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

$(document).ready(function(){
get_content('.$row[song_id].',null,"'.$row[title].'");
});

</script>

我的 javascript 文件:

function get_content(song_id,url,song_title) {
if (song_id != null) {
    $.get('/ajax/player.php',{song_id:song_id}, function(data) {
        video_id = data;
        player = new YT.Player('player', {
            height: '390',
            width: '640',
            videoId: video_id,
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
            }
        });
    });

}
}

但是,视频播放器无法加载。

【问题讨论】:

  • 他的控制台里有什么?直接加载的PHP是否显示正确的数据?
  • 不,控制台中没有任何内容,当 php 第一次加载数据时,一切正常。当我想加载它不起作用的新内容时。

标签: javascript jquery youtube youtube-api youtube-javascript-api


【解决方案1】:

您无法通过 ajax 获取 javascript,然后运行刚刚收到的 javascript。您要做的只是通过 ajax 发送 youtube 视频 id,然后使用这样的函数来放置播放器:

function get_content(song_id,url,song_title) {
    if (song_id != null) {
        $.get('/ajax/player.php',{song_id:song_id}, function(data) {
            video_id = data;

            player = new YT.Player('player', {
                height: '390',
                width: '640',
                videoId: video_id,
                events: {
                    'onReady': onPlayerReady,
                    'onStateChange': onPlayerStateChange
                }
            });
        });
    }
}

更好的是,尝试使用 JSON 通过 Jquery 发送和接收数据。

【讨论】:

  • 您好,感谢您的回复。我听从了你的建议,但它没有触发播放器加载。我已在 UPDATE 1 下发布了更新我在控制台中收到以下错误:未捕获的 ReferenceError: YT is not defined
  • 好吧,所以请确保在您使用它时已定义它...没有足够的代码让我们进一步提供帮助。
猜你喜欢
  • 2016-02-05
  • 2015-12-01
  • 1970-01-01
  • 2010-11-22
  • 2019-07-19
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多