bootd
@bootd
Гугли и ты откроешь врата знаний!

Как отправить ajax запрос 1 раз?

Добрый день! Есть у меня небольшая проблема, никак не могу придумать её решение!

Суть задачи, нужно на сервер отправлять запрос, в котором будет храниться процент от просмотренного видео ролика.
Используется библиотека video.js.
Т.е. если пользователь просмотрел 25% от общей продолжительности ролика, нада отправить запрос с числом 25. А так же для 50%, 75% и 100%.

Вот кусочек кода, где идёт отправка
contentVideo
.play()
.on('timeupdate', function(){

                    var currentTime = Math.round(this.currentTime());
                    var duration = Math.round(this.duration());

                    var percent = Math.round(currentTime / duration * 100);

                    if(percent === 0){
                        postVideoStatus(0);
                    }

                    if(percent >= 25){
                        postVideoStatus(25);
                    }

                    if(percent >= 50){
                        postVideoStatus(50);
                    }

                    if(percent >= 75){
                        postVideoStatus(75);
                    }

                    if(percent === 100){
                        postVideoStatus(100);
                    }

                });


Судя по коду, запросы на 25-50-75 будут посылаться каждый раз. Как мне сделать что бы каждый запрос ушёл только 1 раз?
  • Вопрос задан
  • 324 просмотра
Решения вопроса 1
@artem78
Мой вариант:
player.on('timeupdate', function() {

  var currentTime = Math.round(this.currentTime());
  var duration = Math.round(this.duration());

  var percent = Math.round(currentTime / duration * 100);
  
  var next_percent = $(this).data('next-percent');
  if (!next_percent) {
  	next_percent = 0;
  }

  if (percent >= next_percent) {
    postVideoStatus(next_percent);
    next_percent += 25;
    $(this).data('next-percent', next_percent);
  }

});

https://jsfiddle.net/crazzzy/xqvfa4br/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
werty1001
@werty1001
undefined
contentVideo
.play()
.on('timeupdate', function(){

    var currentTime = Math.round( this.currentTime() ),
        duration = Math.round( this.duration() ),
        percent = Math.round( currentTime / duration * 100 );

    return ( [0,25,50,75,100].indexOf( percent ) !== -1 ) ? postVideoStatus( percent ) : false;

});
Ответ написан
@RidgeA
сохранить информацию о том, что запрос отправлялся на определенный диапазон и не вызывать функцию повторно?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы