在onTime函数jwplayer中只执行一次ajax请求

时间:2015-11-04 05:31:23

标签: javascript ajax wordpress jwplayer jwplayer7

这是我的代码:

jwplayer("mySingleVideoWrapper").onTime(function (event) {
        jQuery("#getCurrentPositionOfVideo").val(event.position);
        var videoLength = jwplayer('mySingleVideoWrapper').getDuration();   
        jQuery("#getWholeDuration").val(videoLength); 
        var totalSec = videoLength;
        var finalNumber = (totalSec*30) / 100; 
        if (event.position > finalNumber) {
            jQuery("#watchedElapsedCount").val('1');
            var videoViewsCount = jQuery("#watchedElapsedCount").val();
            var currentPostId = jQuery("#currentPostId").val();
            var json = '{"videoViewsCount" : "'+ videoViewsCount +'", "currentPostId" : "'+ currentPostId +'"}';
            var getSiteBaseUrl = jQuery('#getSiteBaseUrl').val();
            var ajaxurl = getSiteBaseUrl+"/wp-admin/admin-ajax.php";
            jQuery.ajax({               
                url: ajaxurl,               
                type:"POST",                
                dataType: "json",
                data:{
                    action: "elapsedDurationPercentage",                    
                    data: json              
                },
                success:function(data){ 

                }
      });
    }      
});

我正在使用wordpress和JW Player 7 javascript版本以及用于检测视频视图(当用户观看至少30%的视频时)我正在调用ajax并且在'elapsedDurationPercentage'操作中我正在添加自定义字段和相应的值和下次更新。

现在在onTime()函数内部,我的ajax请求多次调用re事件位置。如何在此函数内只调用一次ajax?

1 个答案:

答案 0 :(得分:2)

var flag = 0;
    jwplayer("mySingleVideoWrapper").onTime(function (event) {
        if(flag == 0){
            jQuery("#getCurrentPositionOfVideo").val(event.position);
            var videoLength = jwplayer('mySingleVideoWrapper').getDuration();   
            jQuery("#getWholeDuration").val(videoLength); 
            var totalSec = videoLength;
            var finalNumber = (totalSec*30) / 100; 
            if (event.position > finalNumber) {
                jQuery("#watchedElapsedCount").val('1');
                var videoViewsCount = jQuery("#watchedElapsedCount").val();
                var currentPostId = jQuery("#currentPostId").val();
                var json = '{"videoViewsCount" : "'+ videoViewsCount +'", "currentPostId" : "'+ currentPostId +'"}';
                var getSiteBaseUrl = jQuery('#getSiteBaseUrl').val();
                var ajaxurl = getSiteBaseUrl+"/wp-admin/admin-ajax.php";
                if(jQuery("#watchedElapsedCount").val() == '1'){
                    flag = 1;
                    var xhr = jQuery.ajax({               
                        url: ajaxurl,               
                        type:"POST",                
                        dataType: "json",
                        data:{
                            action: "elapsedDurationPercentage",                    
                            data: json              
                        },
                        success:function(data){  
                            flag = 1;
                            return flag;
                        }
                    }); 
                }
            }  

    }
});