Как заставить ajax обновлять каждые (n) количество секунд без использования jquery, но с использованием javascript? - PullRequest
2 голосов
/ 02 мая 2011

Я пытаюсь провести опрос javascript на сервере каждые (n) количество секунд, как бы я сделал это с помощью javascript?

Ответы [ 4 ]

5 голосов
/ 02 мая 2011

Если вы используете jQuery:

var seconds = 5;

setInterval(function(){
    $.ajax({
        url: 'something.something',
        data: 'something'
    });
}, seconds * 1000)

Без jQuery:

var seconds = 5;

setInterval(function(){
    some_ajax_function();
}, seconds * 1000)

Или, как @Felix предлагает ниже:

var seconds = 5;
some_ajax_function(seconds);

function some_ajax_function(seconds){
     ..ajax
     onsuccess: setTimeout(function(){some_ajax_function(seconds);}, 
                      seconds * 1000)
}
2 голосов
/ 02 мая 2011

Это просто с помощью следующей функции

window.setInterval ("yourfunctionWithAjaxRequestETC", time_in_ms);});

Enjoy:)

1 голос
/ 02 мая 2011

во-первых, нам нужно сделать объект запроса ajax. Нам нужно учитывать разные браузеры.

var xmlhttp;
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
}
else
  {
   // code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

Теперь мы напишем нашу функцию для отправки запроса

function askData(){
   xmlhttp.open("GET","myinfosource.php",true);  // opens a Get request to the url myinfosource.php, and sets the request to asynchronuous.
   xmlhttp.send(); //sends the request
}

Теперь давайте напишем обработчик событий, который изменяет HTML, когда информация возвращается.

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200) //if we reveived data (readystate 4 means that information was received. status 200 is the status of the HTTP request, where 200 means 'ok'.
    {
    //insert data into the div you want.
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
  }

}

И, наконец, мы устанавливаем интервал для первой написанной нами функции, чтобы она запускалась каждые x секунд.

setInterval('askData',10000);

это обновит ваши данные.

Надеюсь, теперь вы понимаете, почему большинство людей используют фреймворк, такой как jquery, для использования AJAX. Одним из основных преимуществ js-фреймворков является то, что они работают вокруг несовместимости браузеров, поэтому вы, как разработчик, можете сосредоточиться на поставленной задаче.

0 голосов
/ 12 сентября 2013

Я предполагаю, что есть сервлет с шаблоном URL / UpdateCount настроен в web.xml для предоставления динамических данных / содержимого, а на странице jsp есть элемент div countStatDiv,

Следующий код обновляет / обновляет содержимое countStatDiv каждые 30 секунд, используя метод GET, и значение переменной секунд можно изменить в соответствии с необходимостью:

                <script>
                    var request;
                    var seconds=30;
                    function getRequestObject(){
                    setInterval(function() {sendRequest();},seconds*1000);
                    if (window.ActiveXObject){
                    return (new ActiveXObject("Microsoft.XMLHTTP"));
                    } else if (window.XMLHttpRequest){
                    return(new XMLHttpRequest());
                    } else {
                    return (null);
                    }
                    }
                    function sendRequest(){
                    request = getRequestObject();
                    request.onreadystatechange = handleResponse;
                    request.open("GET", "../UpdateCount", true);
                    request.send(null);
                    }
                    function handleResponse(){
                    if((request.readyState == 4)&amp;&amp;(request.status == 200)){
                    var serverResponse = request.responseText;
                    var statCtrl=document.getElementById("countStatDiv");
                    statCtrl.innerHTML=serverResponse;
                    }
                    }
                </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...