0

这是我的代码:

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 请求多次调用事件位置。我怎样才能在这个函数内部只调用一次ajax?

4

1 回答 1

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;
                        }
                    }); 
                }
            }  

    }
});
于 2015-11-04T07:07:27.683 回答