2010-12-28 29 views
37

Me preguntaba si alguien podría ayudarme. Tengo una página php que borra filas de una base de datos. Quiero llamarlo a través de jquery/ajax cada 30 segundos. Pero también quiero poder llamar a la página en cualquier momento, de modo que si agrego un registro a través del formulario, una vez que el formulario se envía, quiero que la página a través de llamada a ajax actualice los resultados de inmediato. ¿Puede alguien señalarme en la dirección correcta o proporcionar algún código base para que pueda tratar de resolver esto? Todavía muy nuevo para jquery/ajax.Llamada Jquery/Ajax con temporizador

Respuesta

67

Si desea establecer algo en un temporizador, puede utilizar setTimeout o setInterval métodos de JavaScript:

setTimeout (expression, timeout); 
setInterval (expression, interval); 

Dónde expression es una función y timeout y interval son números enteros en milisegundos. setTimeout ejecuta el temporizador una vez y ejecuta el expression una vez mientras que setInterval ejecutará el expression cada vez que pase el interval.

Así que en su caso sería trabajar algo como esto:

setInterval(function() { 
    //call $.ajax here 
}, 5000); //5 seconds 

En lo que va del Ajax, jQuery ver de ajax() method. Si ejecuta un intervalo, no hay nada que le impida llamar al mismo ajax() desde otros lugares en su código.

+0

Gracias por la respuesta! Así que dices que si uso el código de arriba para actualizar la llamada ajax cada 5 segundos y luego en la misma página, tengo un formulario que alguien completa y se envía, una vez hecho esto, agrego el registro. Puedo llamar a la misma función setInterval y no tener 2 instancias de esa función ejecutándose a la vez? – John

+8

Entonces, ¿qué desea es que un intervalo se ejecute cada 30 segundos * hasta que * un usuario inicie un envío de formulario ... y luego cree un nuevo intervalo después de eso? Eso también es posible. 'setInterval()' devuelve un entero que es la ID del intervalo. Si almacena esa ID en una variable, puede llamar a 'clearInterval (id) 'que detendrá la progresión. Luego puede reinstalar la llamada 'setInterval()' después de haber completado el envío de su formulario ajax. – treeface