1

我正在尝试将 currentTime、duration 和 currentPrecentAbsolute 值发送到一个 php 页面,该页面获取这些变量并使用 ajax 将它们存储到数据库中。我让它在暂停事件上运行良好,但是当我尝试使用 timeupdate 时,我接到了多个电话。

我希望能够在 currentPercentAbsolute 达到 25%、50% 和 75% 时自动发送数据。我知道问题是什么,我只是不确定如何解决它。不同浏览器的时间更新速度是可变的,我相信默认值约为 250 毫秒。因此,当我的百分比是 25%、50% 或 75% 时,ajax 将继续运行。大约 4 次(每秒 4*250 毫秒)。当然,这只是在视频大约 100 秒长的情况下。如果它是 200 秒长,currentPercentAbsolute 将在这些百分比上停留一整秒,运行我的 ajax 8 次。

所以最终我的问题是,有什么更好的方法来做我正在尝试的事情。在旁注中,我还想实施

$(window).unload(function(){my ajax call in here});

以便在用户在未完成视频的情况下关闭窗口时能够获取相同的统计信息。我让它工作,但遇到了同样的问题。它在 timeupdate 的每次迭代中运行。非常感谢任何和所有帮助。

我的时间更新代码

timeupdate: function (event) {
    var totaltime = Math.floor(event.jPlayer.status.duration);
    var currenttime = Math.floor(event.jPlayer.status.currentTime);
    var percent = Math.floor(event.jPlayer.status.currentPercentAbsolute);                  

    if(percent == '25'){
        $('#timeNow').html(currenttime);
        $('#percentNow').html(percent); 
        $.ajax({
            type: 'POST',
            url: 'teststats.php',
            data : {timeWatched : currenttime, percentWatched : percent, totalTime : totaltime},
            success : function(data) { }
        });                     
    }
    if(percent == '50'){
        $('#timeNow').html(currenttime);
        $('#percentNow').html(percent);
        $.ajax({
            type: 'POST',
            url: 'teststats.php',
            data : {timeWatched : currenttime, percentWatched : percent, totalTime : totaltime},
            success : function(data) { }
        });                         
    }
    if(percent == '75'){
        $('#timeNow').html(currenttime);
        $('#percentNow').html(percent);
        $.ajax({
            type: 'POST',
            url: 'teststats.php',
            data : {
                timeWatched : currenttime, percentWatched : percent, totalTime : totaltime},
            success : function(data) { }
        });                         
    }
},
4

1 回答 1

0

我解决了这个问题的多次运行。我声明了 3 个全局变量,然后做了

if((percent == '25') && (!a)){

并设置

a = true;

在 if 语句中。

仍然遇到问题

timeupdate: function(event) {
    var totaltime = Math.floor(event.jPlayer.status.duration);
    var currenttime = Math.floor(event.jPlayer.status.currentTime);
    var percent = Math.floor(event.jPlayer.status.currentPercentAbsolute);  

    $(window).blind('beforeunload', function() {
        if(!d){
            d = true;
            $('#timeNow').html(currenttime);
            $('#percentNow').html(percent);
            $('#totalTime').html(totaltime);                            
            $.ajax({
                type: 'POST',
                url: 'teststats.php',
                data : {
                    timeWatched : currenttime, 
                    percentWatched : percent, 
                    totalTime : totaltime
                },
                success : function(data) { }
            });
        }
    });
}

也许它正在做它应该做的事情。所有 3 个变量(当前时间、百分比和总时间)都被踢出为 0。当我尝试关闭浏览器窗口或导航到另一个 url 时,我不确定 jplayer 是否会清除 timeupdate 中的值。有人对此有任何想法吗?谢谢。

于 2013-10-06T02:27:18.633 回答