使用Ajax从YouTube api加载大量视频

时间:2019-06-25 08:47:34

标签: ajax youtube-api

我正在尝试显示自定义播放列表的200多个视频(保存在我的数据库中)。我想使用ajax和setInterval连续显示整个列表,让Youtube API呼吸一下。

这是我的代码:

for(var i in a.playlist_rows) {
    iTime += 100;

    setTimeout(function() {
        $.ajax({
            url:'https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id='+a.playlist_rows[i].videoID+'&key=XXX',
            method:'GET',
            cache:false,
            dataType:'json',
            success:function(a) {
                callPageSuccess(a);

                showIn = "playlist_content_show";
                $('button#btn_play').prop('disabled', false);
                $('button#btn_play_repeat').prop('disabled', false);
            },
            error:function() {
                showError('danger', 'Erreur XHR détectée. Contactez le staff.');
            }
        });
    }, iTime);
}

实际上,由于setInterval(),这是每个ajax调用中将要调用的最后一个视频ID。如何获得这个呢?

1 个答案:

答案 0 :(得分:0)

通过在我的匿名函数中传递参数来找出解决方案:

for(var i in a.playlist_rows) {
    iTime += 100;

    setTimeout(function(videoID) {
        $.ajax({
            url:'https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id='+videoID+'&key=AIzaSyAHLt89IGVRiB8aAI4hUFpRFxkxQTHAqZo',
            method:'GET',
            cache:false,
            dataType:'json',
            success:function(a) {
                callPageSuccess(a);

                showIn = "playlist_content_show";
                $('button#btn_play').prop('disabled', false);
                $('button#btn_play_repeat').prop('disabled', false);
            },
            error:function() {
                showError('danger', 'Erreur XHR détectée. Contactez le staff.');
            }
        });
    }, iTime, a.playlist_rows[i].videoID);
}