2013-10-06 1 views
1

Я пытаюсь отправить текущие значения времени, продолжительности и currentPrecentAbsolute на страницу php, которая захватывает эти переменные и сохраняет их в базе данных с помощью ajax. Я отлично работаю над событием паузы, однако, когда я пытаюсь использовать timeupdate, я получаю несколько вызовов.jplayer ajax running mulitple times with timeupdate

Я хочу, чтобы иметь возможность автоматически отправлять данные, когда currentPercentAbsolute достигает 25%, 50% и 75%. Я знаю, в чем проблема, я просто не знаю, как ее решить. Скорость Timeupdate варьируется в разных браузерах, я полагаю, что значение по умолчанию составляет около 250 мс. Поэтому, пока мой процент составляет 25%, 50% и 75%, аякс будет продолжать работать. Примерно 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) { } 
     });       
    } 
}, 

ответ

0

я решал несколько прогонов на этом. я объявил 3 глобальные переменные, а затем сделал

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

и установить

a = true;

внутри, если заявление.

все еще работает с проблемами с

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. Я не уверен, что jplayer очищает значения от timeupdate, когда я пытаюсь закрыть окно браузера или перейти к другому URL-адресу. У кого-нибудь есть мысли по этому поводу? Благодарю.

 Смежные вопросы

  • Нет связанных вопросов^_^