2010-03-30 18 views
1

Salut les gars, je dois être capable de faire un appel ajax à faire après toutes les quelques minutes. Fondamentalement, l'appel ajax serait de vérifier les nouveaux emails dans une boîte de réception. S'il y a de nouveaux emails, les emails seront téléchargés dans une base de données. J'ai tout le code du serveur installé. J'ai juste besoin de savoir comment puis-je configurer sur la partie frontale la partie où l'appel ajax est fait après toutes les quelques minutes plus il doit être configuré de telle sorte que nous ne nous retrouvons pas avec des appels ajax parallèles étant fait si l'ajax call n'a pas retourné de réponse, il ne devrait pas démarrer une nouvelle requête ajax.Besoin d'exécuter un appel ajax de manière incrémentale après des périodes de temps fixes en javascript?

Répondre

3

http://www.w3schools.com/jsref/met_win_settimeout.asp
ou
http://www.w3schools.com/jsref/met_win_setinterval.asp

intervalle de jeu est probablement plus comme ce que vous après, vous pouvez appeler quelque chose comme

setInterval (function() {/ * code que vous voulez exécuter ici * /}, 100);

puis votre code sera exécuté toutes les 100 millisecondes.

Vous aurez probablement besoin d'utiliser beaucoup plus de temps, quelque chose comme 60000 pour chaque minute. Si vous utilisez la méthode settimeout alors vous pouvez l'avoir vérifier attendre la réponse de l'ajax, et laisser le code manipule la réponse ajax définir un nouveau délai.

+0

Dans le cas où je voudrais passer certains paramètres à la fonction appelée par la méthode settimeout comment le ferais-je? – Ali

0

Je mis en place un cookie qui rebondit et-vient entre le serveur et le client pour stocker t La dernière fois, une requête ajax a été faite. Ensuite, à chaque chargement de page, un script js lit le cookie et définit un setTimeout pour le temps restant avant la prochaine requête ajax.

+0

Pourquoi faire tout cet effort supplémentaire pour obtenir la requête AJAX toutes les X secondes, quand s'etInterval' vous permet de faire exactement cela avec un appel de fonction? – thecoshman

+0

Parce que setInterval sera réinitialisé sur le chargement de la page suivante, qui a une forte probabilité de se produire si la minuterie est réglée sur "quelques minutes". Donc, votre requête ajax ** ne se déclenchera jamais **. – Alsciende

+0

Vous pouvez contourner cela en envoyant un appel pour vérifier les nouveaux emails chaque fois qu'une page se charge ... ce qui est * probablement * ce que fait le chargement de la page * de toute façon * – Dancrumb