IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Enregistrement de données en BDD avec AJAX et l'API Page Visibility


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Par défaut Enregistrement de données en BDD avec AJAX et l'API Page Visibility
    Bonjour,
    J'ai un gros problème avec mon code car il est censé vérifier la présence de l'utilisateur sur une page et par la même occasion d'envoyé à une page PHP une donnée pour que PHP l'inscrive dans la base de données. Donc si l'utilisateur consulte la page l'API Page Visibility envoie un signal qui déclenche l'envoi d'une information ici 1 via AJAX vers la page PHP et idem quand l'utilisateur ne consulte pas la page sauf qu'au lieu d'envoyé 1 ont envoi 0. Mais dans mon cas cela ne fonctionne pas avec AJAX car sans AJAX je faisais une redirection en js vers ma page PHP qui redirigeait vers la page précédente de l'utilisateur sauf qu'en redirigent l'API pensait que l'utilisateur consultait la page ce qui n'était donc pas fiable donc en ajax j'essai de faire le même boulot sans redirection. Car mon site affiche que l'utilisateur est connecté si 1 est dans la BDD et si 0 est dans la BDD alors il affiche qu'il est déconnecté.

    Le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <script>
     
        (function() {
            'use strict';
     
            // Set the name of the "hidden" property and the change event for visibility
            var hidden, visibilityChange; 
            if (typeof document.hidden !== "undefined") {
              hidden = "hidden";
              visibilityChange = "visibilitychange";
            } else if (typeof document.mozHidden !== "undefined") { // Firefox up to v17
              hidden = "mozHidden";
              visibilityChange = "mozvisibilitychange";
            } else if (typeof document.webkitHidden !== "undefined") { // Chrome up to v32, Android up to v4.4, Blackberry up to v10
              hidden = "webkitHidden";
              visibilityChange = "webkitvisibilitychange";
            }
     
            // If the page is hidden, ;
            // if the page is shown, 
            function handleVisibilityChange() {
              if (document[hidden]) {
                var state0 = 0;
                var state1 = 1;
                $.ajax({ // A PARTIR DE LA CA BUG!
           url : 'user_connect.php', // La ressource ciblée
           type : 'GET', // Le type de la requête HTTP.
           data : 'state=' + state0;
        });
              } else {
                $.ajax({
           url : 'user_connect.php', // La ressource ciblée
           type : 'GET', // Le type de la requête HTTP. 
           data : 'state=' + state1;
        });
              }
            }
     
            // Warn if the browser doesn't support addEventListener or the Page Visibility API
            if (typeof document.addEventListener === "undefined" || typeof document[hidden] === "undefined") {
              alert("This website requires a modern browser that supports the Page Visibility API.");
            } else {
              // Handle page visibility change   
              document.addEventListener(visibilityChange, handleVisibilityChange, false);
            }
     
        })();</script>
    Merci d'avance pour votre aide

  2. #2
    Membre chevronné Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Par défaut
    Bonjour ArzelPRO,

    Peut-être ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function handleVisibilityChange() {
        var state0 = 0;
        var state1 = 1;
     
        if (document[hidden]) {
            $.ajax({ // A PARTIR DE LA CA BUG!
               url : 'user_connect.php', // La ressource ciblée
               type: 'GET', // Le type de la requête HTTP.
               data: 'state=' + state0;
            });
        } else {
            $.ajax({
                url : 'user_connect.php', // La ressource ciblée
                type: 'GET', // Le type de la requête HTTP. 
                data: 'state=' + state1;
            });
        }
    }

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Par défaut
    Sa ne fonctionne pas

  4. #4
    Membre chevronné Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Par défaut
    Hum, il faut peut-être chercher de quel coter ça ne passe pas. Test des « alert » pour voir que le code Javascript passe bien partout en premier temps.

    Sinon les deux variables ne sont pas nécessaire en fait…

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2017
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 60
    Par défaut
    Je viens de tester ça et ça ne marche malheureusement pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function handleVisibilityChange() {
        var state0 = 0;
        var state1 = 1;
     
        if (document[hidden]) {
            $.ajax({ // A PARTIR DE LA CA BUG!
               url : 'user_connect.php', // La ressource ciblée
               type: 'GET', // Le type de la requête HTTP.
               data: 'state=' + state0;
            });
            alert("Non connecté!!");
        } else {
            $.ajax({
                url : 'user_connect.php', // La ressource ciblée
                type: 'GET', // Le type de la requête HTTP. 
                data: 'state=' + state1;
            });
            alert("Connecté!");
        }
    })
    Et faire sans les variables je ne vois pas comment ?

  6. #6
    Membre chevronné Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Par défaut
    Donc ton événement est surement pas déclenché…

    Ça donne quoi ceci ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function handleVisibilityChange() {
        alert('Événement déclenché !');
     
        if (document[hidden]) {
            $.ajax({ // A PARTIR DE LA CA BUG!
               url : 'user_connect.php', // La ressource ciblée
               type: 'GET', // Le type de la requête HTTP.
               data: 'state=0';
            });
        } else {
            $.ajax({
                url : 'user_connect.php', // La ressource ciblée
                type: 'GET', // Le type de la requête HTTP. 
                data: 'state=1';
            });
        }
    })

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupération des données de BDD avec ajax
    Par malkimohamed dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/08/2015, 13h48
  2. script de verification d'une bdd avec ajax
    Par Invité dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/12/2008, 22h39
  3. [AJAX] Vérifier des données dans une BDD avec AJAX
    Par mwech dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/10/2008, 15h13
  4. Réponses: 2
    Dernier message: 09/01/2008, 08h50
  5. Réponses: 4
    Dernier message: 10/09/2007, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo