Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Циклическая отправка ajax запроса через определенное время. Как сделать?  (Прочитано 1003 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн likesoft

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
  • Ubuntu 16.04.2
    • Просмотр профиля
Всем привет :) Сделал через функцию setInterval(), но ajax запрос отсылается только один раз((
Вот код:
function start() {
            start.count+=7;
            return start.count;
        }
       
        start.count = 0;
        xhttp = new XMLHttpRequest();
        function myjax () {
           
            xhttp.onreadystatechange = function(){
               
                if (xhttp.readyState == 4 && xhttp.status == 200)
                    document.getElementById("myjax").innerHTML = xhttp.responseText;
                   
                }
            xhttp.open("GET", "myjax.php", true);
            var param = 'start=' + start();
            xhttp.send(param);
           
        }
       
        var intervalID = setInterval(myjax, 10000);
        if(start() == 98) {
           
            clearInterval(intervalID);
           
        }

P. S. В javascript'e не силен, подскажите что не так, или как лучше сделать))
« Последнее редактирование: 17 Июня 2015, 18:59:20 от likesoft »

Оффлайн staso

  • Активист
  • *
  • Сообщений: 437
    • Просмотр профиля
(Нажмите, чтобы показать/скрыть)

Оффлайн likesoft

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
  • Ubuntu 16.04.2
    • Просмотр профиля
(Нажмите, чтобы показать/скрыть)


 start.count = 0  - это я поставил начальное значение переменной count, которая увеличивает свое значение на 7 при каждом вызове функции start()
Сейчас смотрел через firebug ход выполнения скрипта, переменная start.count свое значение увеличивает, тоесть она не обнуляется при каждом вызове.
Еще я увидел что повторные ajax запросы все таки отправляются. Проблема была в том что я неправильно отправлял get данные:
var param = 'start=' + start();
            xhttp.send(param);

 а нужно было отправлять так:
xhttp.open("GET", "myjax.php?start="+start(), true);

Пользователь решил продолжить мысль [time]17 Июнь 2015, 18:59:09[/time]:
Циклическая отправка ajax запросов заработала, теперь осталась одна проблема, не срабатывает условие:
var intervalID = setInterval(myjax, 10000);
        if(start.count == 98) {
           
            clearInterval(intervalID);
           
        }
тоесть функция  setInterval() продолжает выполняться после того как  переменная start.count получила значение 98
подскажите как это исправить пожалуйста  :)

Пользователь решил продолжить мысль 17 Июня 2015, 21:13:16:
Все, нашел решение в гугле :)
Вот полностью рабочий код:
function start() {
           
            start.count+=7;
            return start.count;
           
        }
       
        start.count = 0;
        var xhttp       = new XMLHttpRequest();
       
        function myjax () {
            if(start.count == 28) {
           
                clearInterval(intervalID);
           
            }
            else {
               
                xhttp.onreadystatechange = function(){
                   
                    if (xhttp.readyState == 4 && xhttp.status == 200) {
                       
                        document.getElementById("myjax").innerHTML = xhttp.responseText;
                    }
                       
                }
                xhttp.open("GET", "myjax.php?start="+start(), true);
                xhttp.send();
               
            }
           
        }
       
        var intervalID = setInterval(myjax, 10000);




Может кому пригодится  ;)
« Последнее редактирование: 17 Июня 2015, 21:13:16 от likesoft »

 

Страница сгенерирована за 0.036 секунд. Запросов: 26.