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 :

Conversion variables de session en JS


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 144
    Points : 79
    Points
    79
    Par défaut Conversion variables de session en JS
    Bonjour,

    Je cherche à convertir une variable de session en JS.

    Voici le code que j'utilise quand la variable de session est une chaîne de caractère :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script> var user_id = '<?php if(isset($_SESSION['sess_user_id']) && $_SESSION['sess_user_id'] != "") { echo $_SESSION['sess_user_id']; } ?>'</script>
    Le problème est dans le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <script>var sess_communes = <?php if(isset($_SESSION['sess_communes'])) { echo $_SESSION['sess_communes']; } else '' ?></script>
    Le premier cas renvoie une chaîne de caractère alors que le second ramène un objet JSON.

    Conséquence : quand une session est ouverte, ça marche nickel, mais dès que l'on se déconnecte l'application est vautrée et la console renvoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script>var id_user = '' // cad chaîne vide
    var sess_communes = </script> // le code n'est pas fermé
    Autrement dit, le code n'est pas fermé.

    Comment contourner le problème ? Merci pour vos réponses.

    Sylvain



    MAJ : Mon code ne semble pas accepter les opérateurs de coalescence :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var communes1 = [];
    var communes2 = <?php echo $_SESSION['sess_communes'] ?> ?? 'Salut';
     
    console.log(communes2);
    ne renvoie rien et renvoie même une erreur : 'Unexpected token '??''

    Je sais pas trop quoi faire, c'est bloquant et toutes les solutions possibles et imaginables défaillent les unes après les autres....

    Merci pour vos retours. Sylvain

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 436
    Points : 4 930
    Points
    4 930
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>var sess_communes = <?php if(isset($_SESSION['sess_communes'])) { echo $_SESSION['sess_communes']; } else '' ?></script>
    Dans le cas du bloc else PHP n'écrit rien et donc le résultat JS devient : var sess_communes= ce qui provoque une erreur de syntaxe.

    Rajoutez un echo dans le bloc else :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var sess_communes = <?php if(isset($_SESSION['sess_communes'])) { echo $_SESSION['sess_communes']; } else echo '' ?></script>
    Ou bien mieux, utilisez la syntaxe alternative :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>var sess_communes = <?=!empty($_SESSION['sess_communes'])?$_SESSION['sess_communes']:'';?></script>
    Citation Envoyé par sylvain257 Voir le message
    MAJ : Mon code ne semble pas accepter les opérateurs de coalescence :/
    ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var communes2 = <?php echo $_SESSION['sess_communes'] ?> ?? 'Salut';
    Non , c'est mal écrit parce que vous avez mis les ?? à l'extérieur du context PHP, essayez plutôt ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var communes2 = <?php echo $_SESSION['sess_communes'] ?? 'Salut'; ?>
    Ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var communes2 = <?=$_SESSION['sess_communes']?? 'Salut'; ?>

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 144
    Points : 79
    Points
    79
    Par défaut
    Bonjour/soir,

    Effectivement, ca fonctionne parfaitement.

    Merci :-)

    Sylvain

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

Discussions similaires

  1. [C#] Tester existence d'une variable de session
    Par IDNoires dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/12/2004, 12h30
  2. Création d'une variable de session avec un ID
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 18/10/2004, 10h28
  3. Effacer les variables de session
    Par glsn dans le forum ASP
    Réponses: 2
    Dernier message: 12/12/2003, 13h42
  4. Variable de session
    Par Sadneth dans le forum ASP
    Réponses: 6
    Dernier message: 14/11/2003, 11h12
  5. variable de session
    Par divableue dans le forum ASP
    Réponses: 2
    Dernier message: 23/10/2003, 16h04

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