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
37
A
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.
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
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