2009-09-07 6 views
0

Est-ce que jQuery peut afficher un message indiquant à l'utilisateur que l'enregistrement de base de données dans lequel il se trouve a été modifié et qu'il doit être actualisé pour pouvoir détecter les modifications? Donc, fondamentalement, s'ils regardent un enregistrement, éloignez-vous et revenez, où l'utilisateur reçoit un message indiquant que l'enregistrement que vous consultez actuellement a changé - pls refresh.jQuery Message indiquant que l'enregistrement a été modifié

Merci.

Répondre

3

Bien sûr, ce même site le fait.

Comment ça marche à peu près:

  1. En utilisant setInterval et $.ajax(), les sondages clients un script de back-end jamais secondes X.
  2. Le script backend vérifie la base de données et renvoie une sorte de données - JSON est probablement préférable dans ce cas - indiquant si oui ou non
  3. Du côté client, le JavaScript analyse la réponse du serveur et agit en conséquence.

Quelques mises en garde:

  • S'il y a toute sorte de trafic, ce qui a la capacité d'apporter un serveur à genoux. Faites très attention lors de la détermination de la fréquence de l'interrogation.
  • Je suggère de limiter le nombre total de fois par chargement de page que le script est capable d'interroger le serveur (par exemple, après 20 fois, le script arrête d'interroger). De cette façon, vous ne gaspillerez pas de cycles lorsque les utilisateurs quittent la page chargée dans leur navigateur et s'éloignent, par exemple.

Alternativement, vous pouvez regarder Comet, ce qui est techniquement plus difficile et nécessite beaucoup de connaissances du type de configuration du serveur/sysadmin pour faire fonctionner correctement.

0

Oui, cela est possible, mais il y a beaucoup de pièces dont vous aurez besoin:

D'abord, un code côté serveur pour qui peut vérifier si oui ou non un enregistrement a été mis à jour. Deuxièmement, vous devrez utiliser jQuery's ajax features pour envoyer une requête ajax de la page de temps en temps. Dans la fonction de rappel pour cette requête ajax, vous pouvez vérifier si la réponse ajax indique que l'enregistrement a été mis à jour. Troisièmement, vous devez simplement décider comment vous voulez informer l'utilisateur que l'enregistrement a changé. Vous pourriez simplement insérer du texte quelque part sur la page, ou vous pourriez avoir envie et créer une sorte de boîte de dialogue pour les faire savoir. Ou, si vous le souhaitez, vous pouvez même rafraîchir la page pour eux au lieu de leur dire qu'il a été mis à jour.

Quelque chose comme ceci:

function checkForUpdates() { 
    $.getJSON('/theUrlForUpdateChecker', { record_id: 23 }, function(json) { 
     if (json.isRecordUpdated) { 
      var message = 'The record has been updated, please refresh the page'; 
      $('#notificationArea').text(message); 
     } 
    }); 
} 

//execute it every 60 seconds (60000 milliseconds): 
setInterval(checkForUpdates, 60000); 

J'utilise setInterval pour simplifier, mais pour l'intérêt de l'économie des ressources que vous voudriez probablement utiliser setTimeout à plusieurs reprises, et arrêter la vérification des mises à jour une fois que vous connaissez un dossier a été actualisé.

Questions connexes