Как планировать вызовы AJAX каждые N секунд? - PullRequest
6 голосов
/ 29 августа 2009

Если я хочу, чтобы целая страница перезагружалась каждые N секунд, я бы поместил что-то вроде этого в HTML: meta http-equiv="refresh" content="5"

Существует ли стандартная практика для аналогичных действий для вызовов AJAX? Я хочу запланировать, чтобы вызов AJAX прерывался каждые 10 секунд, скажем, для обновления частей страницы без обновления всей страницы. Было бы даже лучше, если бы я мог планировать несколько вызовов AJAX в разное время, поскольку некоторые части страницы могут обновляться чаще, чем другие.

TIA

Ответы [ 4 ]

11 голосов
/ 29 августа 2009

Вы можете использовать setTimeout или setInterval (последний, вероятно, лучше всего подходит для того, что вы хотите сделать).

setInterval(makeRequest, (10 * 1000));

... где makeRequest - это функция, которая перезагружает некоторый контент через AJAX.

4 голосов
/ 29 августа 2009
function proxy()
{
  /* implement call to your Ajax method */
}

setInterval( proxy, 1000 ); // last arg is in milliseconds
1 голос
/ 28 апреля 2013
You can use serInterval method of javascript:
Just write down the lines at the bottom of your page:

<script>
window.setInterval(function(){
  ajaxCallFunction();  //calling every 5 seconds
}, 5000);

function ajaxCallFunction(){
    //this function uses ajax to interact with the server
}
<script>
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, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...