J'ai une page php qui fait écho aux lignes d'une base de données. Je veux l'appeler via jquery/ajax toutes les 30 secondes. Mais je veux également pouvoir appeler la page à tout moment afin que si j'ajoute un enregistrement via le formulaire, une fois le formulaire soumis, je souhaite que la page via soit appelée à ajax pour mettre à jour les résultats immédiatement. Quelqu'un peut-il m'orienter dans la bonne direction ou fournir un code de base pour que je puisse essayer de comprendre cela? Encore très nouveau pour jquery/ajax.
Si vous souhaitez définir quelque chose sur une minuterie, vous pouvez utiliser les méthodes setTimeout
ou setInterval
de JavaScript:
setTimeout ( expression, timeout );
setInterval ( expression, interval );
Où expression
est une fonction et timeout
et interval
sont des entiers en millisecondes. setTimeout
exécute le temporisateur une fois et exécute le expression
une fois tandis que setInterval exécutera le expression
chaque fois que le interval
passe.
Donc, dans votre cas, cela fonctionnerait comme ceci:
setInterval(function() {
//call $.ajax here
}, 5000); //5 seconds
En ce qui concerne l'Ajax, voir la méthode ajax()
de jQuery . Si vous exécutez un intervalle, rien ne vous empêche d'appeler la même ajax()
à d'autres endroits de votre code.
Si vous voulez qu'un intervalle s'exécute toutes les 30 secondes jusqu'à ce qu'un utilisateur lance une soumission de formulaire ... puis crée un nouvel intervalle après cela, c'est également possible:
setInterval()
renvoie un entier qui est l'ID de l'intervalle.
var id = setInterval(function() {
//call $.ajax here
}, 30000); // 30 seconds
Si vous stockez cet ID dans une variable, vous pouvez alors appeler clearInterval(id)
qui arrêtera la progression.
Ensuite, vous pouvez réactiver l'appel setInterval()
après avoir terminé votre soumission de formulaire ajax.