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 :

Envoyer dans le script JS la valeur d'une variable php


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Points : 48
    Points
    48
    Par défaut Envoyer dans le script JS la valeur d'une variable php
    Bonjour,

    Sur mon site, j'utilise le systeme de social login de Janrain.
    Donc, l'utilisateur clic sur un bouton et cela ouvre le pop up permettant d'afficher la connexion au site.
    Voici le code javascript que j'ai dans mon <head> </head>

    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
     
    <script type="text/javascript">
    (function() {
        if (typeof window.janrain !== 'object') window.janrain = {};
        if (typeof window.janrain.settings !== 'object') window.janrain.settings = {};
     
     
        janrain.settings.tokenUrl = 'http://localhost:8888/write_advise.php?id=<?php echo $id; ?>';
     
        function isReady() { janrain.ready = true; };
        if (document.addEventListener) {
          document.addEventListener("DOMContentLoaded", isReady, false);
        } else {
          window.attachEvent('onload', isReady);
        }
     
        var e = document.createElement('script');
        e.type = 'text/javascript';
        e.id = 'janrainAuthWidget';
     
        if (document.location.protocol === 'https:') {
          e.src = 'https://rpxnow.com/js/lib/ratemywork/engage.js';
        } else {
          e.src = 'http://widget-cdn.rpxnow.com/js/lib/ratemywork/engage.js';
        }
     
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(e, s);
    })();
    </script>
    Dans mon <body> j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="write_advise.php?id=<?php echo $id; ?>"  class="janrainEngage" >
    Mon probleme est le suivant: dans le code JS, il y a : janrain.settings.tokenUrl = 'http://localhost:8888/write_advise.php?id=<?php echo $id; ?>';

    cela fonctionne sans problème, ma page write_advise s'ouvre bien mais le id est vide.

    Ma question est donc: comment faire pour que le lien present dans le JS soit complet et contienne donc la valeur de $id

    D'avance merci

    Mickael

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    C'est un problème classique. PHP et JavaScript ne « vivent » pas au même moment.

    Il faut bien comprendre que PHP tourne côté serveur, et JavaScript côté client. PHP ne sait générer que du texte et l'envoyer au client via HTTP. HTML et JavaScript, tout ça c'est juste du texte pour PHP. Ce n'est que lorsque ça arrive au navigateur que ça prend un sens.

    De son côté, le navigateur reçoit des données texte qu'il interprète comme HTML et JavaScript. Une fois qu'il a tout reçu, il ferme sa connexion au serveur et le processus PHP sur le serveur s'arrête. Il n'a alors plus aucune chance de connaître une variable du serveur à moins de rouvrir la connexion et relancer le processus serveur (ce qui peut se faire par exemple avec Ajax).

    La solution la plus simple est d'envoyer la variable au même moment que tout le reste. Pour ça, ton serveur doit générer une ligne de code JavaScript déclarant la variable.

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<script>var advise_id = $id</script>";

    Si par exemple $id contient la valeur 42, une fois interprétée et envoyée, cette ligne de code devient :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>var advise_id = 42;</script>

    Ensuite, il te faudra juste modifier un peu ton JS pour que tokenUrl reçoive la bonne valeur.

  3. #3
    Membre du Club
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Points : 48
    Points
    48
    Par défaut passer une variable php en javascript
    Bonjour,

    Merci pour ta réponse.
    J'ai essaye mais j'ai encore quelques soucis.

    J'ai bien ajoute le code dans la version php et cela fonctionne
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<script>var advise_id = $id; document.write(advise_id);</script>";
    affiche bien le contenu de $id

    Maintenant ou cela se complique, c'est pour le passage dans la partie script dans le head. Si avant le debut de la fonction, je fais un document.write(advise_id), rien ne s'affiche. Donc j'en deduis que la valeur de ma variable n'arrive pas jusque la.
    Pour info, ma variable $id vient de $id=$_GET[id]
    Pourriez vous m'aider ?

    Merci beaucoup

    Mickael

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Comme d'hab
    LISEZ LA FAQ ET LA SECTION CONTRIBUEZ
    http://www.developpez.net/forums/d10...cript-methode/

    A+JYT

  5. #5
    Membre du Club
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Points : 48
    Points
    48
    Par défaut passage variable vers JS
    Bonjour,

    Merci pour le lien
    J'ai essaye
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $script = Array(
    	'id' => $id
    	);

    Si je fais un echo $script[id] il affiche bien l'id en question

    Dans la balise head, j'ai mis:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    scriptData = <?php echo json_encode($script); ?>;

    Si je fais document.write(scriptData), il affiche la null

    Je ne comprends hélas pas pourquoi

    Merci

    Mickael

  6. #6
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    document.write est à bannir

    console.log ou alert mais pas document.write

    peut-on voir le source de ton navigateur ?
    A+JYT

  7. #7
    Membre du Club
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Points : 48
    Points
    48
    Par défaut passer une variable php en javascript
    J'ai utilise alert et il affiche aussi null

    Si j'affiche le code source de ma page depuis Safari j'ai ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <script type="text/javascript">
    scriptData = null;
    Mais je viens de me rendre compte que je me complique la vie pour rien. Commme mon $id vient d'un $_GET, je peux l'extraire de l'URL via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var url = window.location.search;
      alert(url.substring(url.lastIndexOf("=")+1));
    Mickael

  8. #8
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    tu as un pb dans ton php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    json_encode($script);
    te retourne null;

    ce n'est donc pas un pb JS

    A+JYT

  9. #9
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    C'est plus simpe en effet
    Mais attention, s'il y a d'autres paramètres GET, ton substring ne marche plus. Il peut arriver que le navigateur ajoute des paramètres à l'URL, par exemple si l'utilisateur passe par un proxy web. Dans le doute, il vaut mieux se protéger, surtout quand c'est facile à faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log(location.search.match(/[?&]id=([^&#]+)/));

Discussions similaires

  1. Affichage de la valeur d'une variable php dans un code javascript
    Par hastiok dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/12/2009, 12h59
  2. Réponses: 2
    Dernier message: 17/06/2009, 23h00
  3. [Spip] Récupérer la valeur d'une variable PHP dans une boucle Spip
    Par papisdoums dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 10/04/2009, 19h03
  4. [PHP 5.0] Récupérer la valeur d'une variable php dans du code javascript
    Par HF974 dans le forum Langage
    Réponses: 4
    Dernier message: 08/03/2009, 11h46
  5. Réponses: 1
    Dernier message: 23/04/2007, 13h22

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