Предотвратить дублирование скрипта? - PullRequest
0 голосов
/ 09 июля 2020

У меня проблема с Ajax, где каждый раз при отправке данных скрипт дублируется, и это заставляет мой звук перекрываться или воспроизводиться несколько раз.

$.ajax({
    url: 'fetch.php',
    method: 'POST',
    data: { limit: limit, start: start },
    cache: false,
    success: function (data) {
        $('#load_quotes_recent').append(data);

        if (!$.trim(data)) {
            action = 'active';
        } else {
            action = 'inactive';
        }

        if (window.location == 'https://www.example.com/') {
            $('.icon-wrapper').on('click', function () {
                var postid = $(this).data('id');
                $post = $(this);

                $.ajax({
                    url: 'fetch.php',
                    type: 'post',
                    data: {
                        'liked': 1,
                        'postid': postid
                    },
                    success: function (response) {
                        var audio = new Audio('../sounds/pop.mp3');
                        audio.pause();
                        audio.currentTime = 0;
                        audio.play();
                    }
                });
            });
        }
    }
});

Мне было интересно, был ли способ предотвратить дублирование сценария, чтобы звук не перекрывался?

Причина, по которой он у меня такой, в том, что если бы я поместил сценарий в fetch.php Ajax, подумал бы Когда я дошел до конца, у меня все еще остались данные, хотя это не так.

Было бы здорово, если бы существовал способ «заменить» тот же сценарий вместо их дублирования.

1 Ответ

2 голосов
/ 09 июля 2020

Почему бы просто не инициализировать звук отдельно от AJAX, а затем воспроизводить его только при необходимости?

var audio = new Audio('../sounds/pop.mp3');

$.ajax({
  url: 'fetch.php',
  method: 'POST',
  data: { limit: limit, start: start },
  cache: false,
  success: function (data) {
    $('#load_quotes_recent').append(data);

    if (!$.trim(data)) {
      action = 'active';
    } else {
      action = 'inactive';
    }

    if (window.location == 'https://www.example.com/') {
      $('.icon-wrapper').on('click', function () {
        var postid = $(this).data('id');
        $post = $(this);

        $.ajax({
          url: 'fetch.php',
          type: 'post',
          data: {
            'liked': 1,
            'postid': postid
          },
          success: function (response) {
            audio.pause();
            audio.currentTime = 0;
            audio.play();
          }
        });
      });
    }
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...