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 :

appel fonction JS


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut appel fonction JS
    Bonjour

    Je rencontre un problem avec l'appel d'une fonction JS et les passages de params

    J'ai un code PHP
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $wcodite  = odbc_result($w_result, "CODITE"); 
    $wproddes = odbc_result($w_result, "PRODDES");   
     
    if (User_Option_Ok($w_connect, $_SESSION['userCode'], "WINTDISP"))   
                                     echo "<th class=tdcenter><a href=\"#Stock_Items\"         onclick='affichStock(\"$wcodite\",\"$wproddes\")'     >"._DISPO.     "</a></th>"   ;


    qui appel la fonction JS : affichStock()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      function affichStock(w_codite, w_proddes) 
     { 
     
       url="Stock_Items.php?wcodite="+ w_codite + "&wproddes=" + w_proddes; 
             Popup_Stock_Items= open(url,"Stock_Items","dependent=yes,resizable=no,width=500,height=380,scrollbars=no,status=no"); 
             Popup_Stock_Items.focus(); 
     
     }
    Je rencontre un pb a l'execution, la valeur de la variable $wcodite du code PHP est 'MKU11KW20005+428', mais dans le code JS je recupère 'MKU11KW20005 428' sans le '+'

    Tous les + sont systematiquement supprimés !! pourquoi ? et comment éviter le problème ?


    Par avance Merci

    Jerome

  2. #2
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Il faut encoder l'URL car le + est un caractère spécial.

    La fontion encodeURIComponent se charge de ça.

    ++
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut
    Si je comprends bien, je dois encoder dans mon JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      function affichStock(w_codite, w_proddes) 
     { 
     
       url=encodeURIComponent("Stock_Items.php?wcodite="+ w_codite + "&wproddes=" + w_proddes); 
             Popup_Stock_Items= open(url,"Stock_Items","dependent=yes,resizable=no,width=500,height=380,scrollbars=no,status=no"); 
             Popup_Stock_Items.focus(); 
     
     }

    mais quand dois je decoder ?
    dans le code php de Stock_Items.php ?

  4. #4
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Ma page de test :

    Page appelante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <html>
    <body>
    <script type='text/javascript'>
    var url = 'test1.php?a=' + encodeURIComponent("1+2");
    var popup = open(url, "Popup", "resizable=no,width=500,height=380,scrollbars=no,status=no");
    popup.focus();
    </script>
    </body>
    </html>
    Page appelée (popup) :

    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
    <html>
    <body>
    <script type='text/javascript'>
    <?php
        echo 'var p = ' . $_GET['a'] . ';';
    ?>
        alert(p);
    </script>
    <p>
    <?php
        echo $_GET['a'];
    ?>
    </p>
    </body>
    </html>
    Moralité : il ne faut encoder que les valeurs que vous souhaitez passer dans le GET (et non tout l'URL) et il n'y a rien a décoder
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Par défaut
    Super cela fonctionne, merci beaucoup

    Juste pour que je puisse devenir un JEDI un jour
    Quand utilise t'on le DecodeURIcomponent ?

    Encore merci

    Jerome

  6. #6
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Bah de la manière inverse

    Il faut juste admettre que l'URL soit encodée puis on la re-décode.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <html>
    <head>
    <script type='text/javascript'>
     
    function bodyLoad() {
        var encodedURI = 'test.php?' + encodeURIComponent('1+2');
        alert('encoded : ' + encodedURI);
        var decodedURI = decodeURIComponent(encodedURI);
        alert('decoded : ' + decodedURI);
    }
    </script>
    </head>
    <body onload='bodyLoad()'>
    </body>
    </html>

    A moins que j'ai mal saisi le sens de la question
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

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

Discussions similaires

  1. Appel fonction php dans code javascript
    Par licorne dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/03/2008, 10h55
  2. PB pour Appel fonction dans DLL sur Builder3
    Par Fbartolo dans le forum C++Builder
    Réponses: 15
    Dernier message: 10/03/2005, 12h58
  3. pro c appelle fonction connexion
    Par friends dans le forum Oracle
    Réponses: 3
    Dernier message: 10/05/2004, 17h07
  4. Appels fonctions DLL
    Par Micka91 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 17/02/2004, 17h32
  5. Appel fonction assembleur en C
    Par grandjouff dans le forum C
    Réponses: 6
    Dernier message: 07/12/2003, 20h43

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