2009-08-29 15 views
6

Si quiero una página entera para volver a cargar cada N segundos, me puse algo como esto en el código HTML: meta http-equiv="refresh" content="5"cómo programar llamadas ajax cada N segundos?

¿Existe una práctica estándar para hacer el mismo tipo de cosas para llamadas AJAX? Quiero programar una llamada AJAX para que se active cada 10 segundos, para actualizar partes de la página, sin actualizar toda la página. Sería aún mejor si pudiera programar varias llamadas AJAX en diferentes momentos, ya que algunas partes de la página pueden necesitar ser actualizadas con más frecuencia que otras.

TIA

+2

Desde setTimeout y setInterval ya han sido mencionado, probablemente debería echar un vistazo a las notas de John Resig sobre cómo funcionan los temporizadores en JavaScript - http://ejohn.org/blog/how-javascript-timers-work/ –

+0

En cuanto a la biblioteca jQuery, parece haber un popular plug-in diseñado para hacer específicamente lo que yo estaba buscando: http://www.360innovate.co.uk/blog/2009/03/periodical updater-for-jquery/ – aaa90210

Respuesta

11

Usted podría utilizar setTimeout o setInterval (este último es probablemente el más adecuado para lo que quieres hacer).

setInterval(makeRequest, (10 * 1000)); 

... donde makeRequest es una función que vuelve a cargar algo de contenido a través de AJAX.

+1

Si hace esto, me aseguraré de verificar que la solicitud anterior haya finalizado antes de iniciar otra. No desea apilar las solicitudes si hay retraso de la red. – jtbandes

+0

@jtbandes: Buen punto. Sin embargo, esta lógica probablemente entraría en la función "makeRequest". –

+0

@jtbandes: gracias por la propina. – 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

que suponer que existe un servlet con el patrón de URL /UpdateCount está configurado en web.xml para proporcionar dinámico de datos/contenido y no es un elemento div countStatDiv en la página JSP.

El siguiente código refresca/actualiza el contenido de countStatDiv cada 30 segundos utilizando el método GET y variables segundos valor se puede cambiar de acuerdo a la necesidad:

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