3 votes

Variable Remise à 0 à chaque rafraîchissement

J'essaie de créer un code qui me permette de montrer combien une certaine partie de mon site web a été vue.

Mon problème est que, lorsque je rafraîchis, il revient à zéro, au lieu de 2. J'espère que vous pourrez m'aider. Je veux que le code s'exécute indéfiniment, ou aussi longtemps que je le souhaite, et qu'il ajoute simplement un 1 à ce qu'il a été, même si c'était hier. Voici l'exemple du code.

<script type="text/javascript">
var bannerViews = 0;
function addViews (){
bannerViews = bannerViews + 1;
}

addViews();
</script>

<p>This banner has been viewed <script type="text/javascript">document.write(bannerViews);</script> times </p>

J'espère que vous pourrez m'aider.

0voto

Abhishek Ranjan Points 345

Il revient à 0 parce que la variable bannerViews est réinitialisé à 0 à chaque chargement de page. Vous devrez stocker cette variable dans un fichier JSON/une base de données et y récupérer/mettre à jour la valeur.

0voto

Chaque fois que vous rafraîchissez la page, le code va être réinitialisé et les variables sont incluses.

Pour résoudre ce problème, vous devez soit utiliser un serveur web et y enregistrer la variable, soit trouver un moyen d'enregistrer la variable dans le système de fichiers et de la charger à nouveau. retour.

0voto

PressingOnAlways Points 1289

La raison pour laquelle le compteur est constamment remis à zéro est que vous déclarez la variable pendant l'exécution. Il n'y a pas de persistance de la variable, de sorte qu'à chaque fois que le site Web est chargé, la variable repart de 0. Chaque navigateur client garde la trace de la variable séparément, de sorte que même si vous parveniez à faire persister la variable sur votre navigateur local, vous ne pourriez pas garder la trace des pages vues par les autres navigateurs. La solution à ce problème est de garder la trace des pages vues à partir d'un serveur centralisé.

Vous pouvez utiliser un service gratuit tel que http://www.webestools.com/pages-views-counter-free-number-pages-views-statistics.html pour créer le compteur qui persisterait entre les pages vues et les différents clients.

0voto

Mr. Alien Points 60232

C'est parce que chaque fois que vous rafraîchissez votre page, votre code se réinitialise. Pour que les données persistent, vous devez les stocker quelque part. Soit dans un cookie, soit dans un stockage local.

Si vous optez pour le stockage local, voici comment procéder.

var bannerViewCount = localStorage.getItem('bannerViews');

if(!bannerViewCount) {
  bannerViewCount = 0;
}

function addViews() {
  localStorage.setItem('bannerViews', ++bannerViewCount);
  document.body.innerHTML = 'Banner view count is :' + bannerViewCount;
}

addViews();

Démo (cliquez plusieurs fois sur Exécuter dans la barre supérieure et vous le verrez s'incrémenter)

Ici, ce que je fais, c'est d'abord récupérer le nombre de vues des bannières. Si je ne l'ai pas, je l'initialise à zéro.

Plus tard, j'ai addViews() j'incrémente l'appel bannerViewCount par un et le stocker dans le localStorage . C'est tout.


Notez que les données sont stockées dans votre espace de stockage local. Si vous souhaitez que le compte soit également visible par les autres utilisateurs, vous devez le stocker dans une base de données ou un fichier texte et l'analyser ultérieurement.


Si vous voulez le stocker sur le nuage, afin de pouvoir partager le compte entre les visiteurs, vous pouvez procéder comme suit.

function addViews() {
  $.get('//jsonbin.io/b/5974382ca489d40388582791/latest', function(data) {
    var bannerViewCount = data.bannerviews;

    $.ajax({
      url: '//jsonbin.io/b/update/5974382ca489d40388582791',
      type: 'post',
      dataType: 'json',
      data: {
        snippet: JSON.stringify({
          bannerviews: ++data.bannerviews
        })
      },
      success: function(fetch) {
        var data = fetch.data;
        document.body.innerHTML = 'Banner view count is : ' + JSON.parse(data).bannerviews;
      }
    });
  });
}

addViews();

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Cliquez sur "Exécuter l'extrait de code" et voyez le compteur s'incrémenter. Passez à n'importe quel autre navigateur et le compteur persistera comme prévu. Notez que les données stockées ici peuvent être manipulées car il n'y a pas d'authentification en place. Évitez donc cette méthode si vous voulez que le compte soit précis et légitime.

0voto

henrybbosa Points 865

Ce que vous devez faire est d'obtenir la valeur initiale 0, la stocker sur le serveur, la base de données ou le fichier. changer de ligne var bannerViews = 0; à quelque chose comme ;

var bannerViews = getValueFromServer();

et chaque fois que vous le réassignez, vous le remettez dans le stockage externe ;

Pour l'instant, chaque fois que vous faites référence à la page . le code var bannerViews = 0; s'exécutera et donc bannerViews sera toujours réaffecté à 0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X