2009-08-29 18 views
6

Jeśli chcę całą stronę, aby przeładować co N sekund, chciałbym umieścić coś takiego w kodzie HTML: meta http-equiv="refresh" content="5"jak zaplanować wywołania ajax co N sekund?

Czy jest standardową praktyką do prowadzenia tego samego rodzaju rzeczy dla AJAX wywołuje? Chcę, aby abonament AJAX wywoływał się co 10 sekund, aby zaktualizować części strony, bez odświeżania całej strony. Byłoby jeszcze lepiej, gdybym mógł zaplanować wiele wywołań AJAX w różnych momentach, ponieważ niektóre części strony mogą wymagać aktualizacji częściej niż inne.

TIA

+2

Ponieważ setTimeout i setInterval zostały już wspomniano, prawdopodobnie powinieneś rzucić okiem na notatki Johna Resiga dotyczące działania timerów w JavaScript - http://ejohn.org/blog/how-javascript-timers-work/ –

+0

Patrząc na bibliotekę jQuery - wydaje się, że jest popularny wtyczka zaprojektowana specjalnie do tego, o co mi chodziło: http://www.360innovate.co.uk/blog/2009/03/periodical updater-for-jquery/ – aaa90210

Odpowiedz

11

Można użyć setTimeout lub setInterval (ten ostatni jest chyba najlepiej nadaje się do tego, co chcesz zrobić).

setInterval(makeRequest, (10 * 1000)); 

... gdzie makeRequest to funkcja, która ładuje pewne treści poprzez AJAX.

+1

Jeśli to zrobisz, sprawdzę, czy poprzednie żądanie zostało zakończone przed rozpoczęciem kolejnego. Nie chcesz zgłaszać żądań, jeśli występuje opóźnienie sieci. – jtbandes

+0

@jtbandes: Dobra uwaga. Jednak ta logika prawdopodobnie wejdzie w funkcję "makeRequest". –

+0

@jtbandes: dzięki za cynk. – aaa90210

4
function proxy() 
{ 
    /* implement call to your Ajax method */ 
} 

setInterval(proxy, 1000); // last arg is in milliseconds 
1
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

Zakładam, że istnieje aplet z Wzorzec URL /UpdateCount jest skonfigurowany w web.xml, aby zapewnić dynamiczne dane/treści i nie jest elementem div countStatDiv na stronie JSP.

Poniższy kod odświeża/aktualizuje zawartość countStatDiv co 30 sekund przy użyciu metody GET i zmienne sekund wartość może być zmieniana w zależności od potrzeb:

   <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>