Повторные AJAX запросы JQ-JS

328
11 июля 2017, 23:08

Суть такова, к примеру есть функция которая делает запрос на сервер для генерации ссылки по последующим запуском этой ссылки в плеере. Ну есть одна проблемка к примеру на сайте в блоке есть плейлист и кнопки в плеере, когда человек быстро клацает эти кнопки вперёд назад или плейлист то генерируется очень много запросов.. и они как то становятся в очередь или что? к примеру в плейлисте 10 названий, он быстро клацнул на все, не дожидаясь ответа от сервера.. к примеру остановился на 10.когда запрос завершился скрипт включает этот фаил к примеру 10 раз... я сделал переменную для ajax запроса и выставил флаги к в примере в низу, по 10 раз файл перестал запускаться. но всё равно запросы проскакивают если быстро переключатся между файлами... как бы это так решить мм? блокировать интерфейс или кнопки до загрузки файла не вариант) надо как то сделать если он быстро переключает то скрипт загружает только последний выбранный файл )

 resetnumber = 0;
go = true;
//Генерация ссылки
function player(idurl) {
  if (go == true) {
    go = false;
    ajax = $.ajax({
      dataType: 'json',
      url: "http://site.ru&sesid=" + coocike + "&hd=720&id=" + idurl,
      error: function(XMLHttpRequest) {
        if (XMLHttpRequest.statusText != "abort") {
          $.ajax({
            url: 'http://site.ru&sesid=' + coocike,
            cache: false,
            dataType: 'json',
            timeout: 5000,
            error: function() {
              alert('не авторизован к примеру');
              window.location.href = '/error';
            },
            success: function() {
              go = true;
              alert('БЫЛА ОШИБКА переподключаемся');
              player(idurl);
              resetnumber++;
              $('.infoerr').html('Возможно проблемы с интернетом переподключаемся' + resetnumber);
            }
          });
        }
      },
      success: function(json) {
        go = true;
        resetnumber = 0;
        file = json.get.file;
        RUN(file); //включаем плеер
        $('#preload').stop().fadeOut();
        setInterval(function() {
          subtitrs(json.get.subtitrs); //Запускаем субтитры например
        }, 100);
      }
    })
  } else {
    ajax.abort();
    go = true;
    player(idurl);

  }
}
Answer 1

Перед запросом

ajax = $.ajax({

сделайте "unbind" для кнопки (если JQuery), а в коллбеке ответа

success: function(json) { вот здесь }

обратное назначение

$("#button").on("click", function(){ ... })

В этом случае скрипт не будет реагировать на многократные нажатия, пока не вернется ответ сервера.

READ ALSO
jquery.balloon.js: выводить contents+title

jquery.balloon.js: выводить contents+title

Как используя jqueryballoon

225
Нарисовать граф

Нарисовать граф

Нужна помощь в отрисовке графаМожет быть любое количество элементов с разным весом

201
Работает ли Heap Spraying в 2017?

Работает ли Heap Spraying в 2017?

Работает ли Heap Spraying в 2017 году?

322
JS bootstrap popover click + mouseenter - mouseleave conflict

JS bootstrap popover click + mouseenter - mouseleave conflict

При наведении и убирании курсора все ОК, а вот когда нажимаю кнопку не уводя курсор с кнопки, то поповер пропадает, хотя не должен, в чем проблема?

255