2010-12-28 19 views
37

Mi chiedevo se qualcuno potesse darmi una mano. Ho una pagina php che echi le righe da un database. Voglio chiamarlo via jquery/ajax ogni 30 secondi. Ma voglio anche essere in grado di chiamare la pagina in qualsiasi momento in modo che se aggiungo un record tramite il modulo, una volta inviato il modulo, voglio che la pagina venga chiamata ad ajax per aggiornare subito i risultati. Qualcuno può indicarmi la giusta direzione o fornire un codice base in modo da poter provare a capirlo? Ancora molto nuovo per jquery/ajax.chiamata Jquery/Ajax con timer

risposta

67

Se si desidera impostare qualcosa su un timer, è possibile utilizzare setTimeout o setInterval metodi di JavaScript:

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

Dove expression è una funzione e timeout e interval sono interi in millisecondi. setTimeout esegue il timer una volta e esegue il expression una volta mentre setInterval eseguirà il expression ogni volta che passa interval.

Quindi nel tuo caso sarebbe lavorare qualcosa di simile:

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

Per quanto riguarda l'Ajax va, vedere jQuery di ajax() method. Se si esegue un intervallo, non vi è nulla che impedisce di chiamare lo stesso ajax() da altri punti del codice.

+0

Grazie per la risposta! Quindi stai dicendo se uso il codice qui sopra per aggiornare la chiamata ajax ogni 5 secondi, poi sulla stessa pagina ho una forma che qualcuno compila che viene inviata, una volta che è stata aggiunta aggiungendo il record posso chiamare la stessa funzione setInterval sopra e non userà hai 2 istanze di quella funzione in esecuzione contemporaneamente? – John

+8

Quindi è necessario eseguire un intervallo ogni 30 secondi * finché * un utente inizia l'invio di un modulo ... e successivamente crea un nuovo intervallo dopo questo? Anche questo è possibile 'setInterval()' restituisce un intero che è l'ID dell'intervallo. Se memorizzi quell'ID in una variabile, puoi chiamare "clearInterval (id)" che fermerà la progressione. Quindi è possibile ripristinare la chiamata 'setInterval()' dopo aver completato l'invio del modulo ajax. – treeface