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 :

Du PHP dans une fonction JavaScript que j'aimerais mettre dans un fichier toto.js


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut Du PHP dans une fonction JavaScript que j'aimerais mettre dans un fichier toto.js
    Bonjour à tous,

    Mon problème est simple, j'ai une trentaine de fonctions javascript dans mon code principal (index.php), du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function statut (idA){
    var xhr_object = null;
    if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else {alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
    xhr_object.open("POST", "sauve.php?joueur=<?php echo $joueur;?>&ong=statut&statut="+idA, true);
    xhr_object.onreadystatechange = function() {if(xhr_object.readyState == 4) {document.getElementById("div_joueur").innerHTML = xhr_object.responseText;}}
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    var data = "joueur=<?php echo $joueur;?>&ong=statut&statut="+idA;
    xhr_object.send(data);
    }
    Du coup, je rencontre plusieurs pbs, s'il vous plait :

    1 - Comment mettre ces fonctions dans un fichier toto.js a part pour soulager le code de ma page index.php sachant que j'ai besoin d'intercaler une valeur PHP
    2 - Je sais que j'utilise a la fois la fonction POST et GET, alors que je n'ai besoin que du GET, mais si j’enlève la fonction POST, cela ne fonctionne pas ????? la je comprends pas.

    Pour info le fichier sauve.php récupere donc les GET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    session_start();
    require ('conx.php');
    require ('config.php');
    require ('session.php');
     
    $joueur = @$_GET["joueur "]; 
    $statut = @$_GET["statut"]; 
    ......

    Merci beaucoup pour votre aide.
    Olivier

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Pour que le php dans ton js soit interprété deux possibilités soit tu changes l'extension de ton fichier js en .php
    soit tu mets une directive sur ton serveur poru que php interprète avec php les fichiers d'extension .js
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Autre solution pour avoir un fichier js séparé, tu peux faire afficher les valeurs php dans le DOM et les récupérer ensuite en javascript. On peut se servir d'un input de type hidden situé n'importe où dans le body, ou encore se servir d'un attr d'une div ou d'un élément existant.

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <body>
     
    <input type="hidden" id="joueur_js" value="<?= isset($_GET['joueur']) ? $_GET['joueur'] : '';?>">
     
    </body>
     
    <script>
    ...
     
    xhr_object.open("POST", "sauve.php?joueur=document.getElementById('joueur_js').value&ong=statut&statut="+idA, true);
    ...
    </script>
    Au passage, inspires-toi de ma syntaxe avec isset() (ou variante "!empty") pour vérifier l'existence des variables php plutôt que d'utiliser l'opérateur de suppression des erreurs '@' qui ne doit être employé que si l'on ne peut pas faire autrement.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    si je peux ne permettre.....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function statut (idA){
    ...
    xhr_object.open("POST", "sauve.php?joueur=<?php echo $joueur;?>&ong=statut&statut="+idA, true);
    ...
    }
    Ce n'est pas plus simple en mettant "joueur" en paramètre à la fonction JavaScript ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function statut (idA, joueur){
    ...
    xhr_object.open("POST", "sauve.php?joueur="+joueur+"&ong=statut&statut="+idA, true);
    ...
    }
    Et dans le code PHP, on appelle la fonction JavaScript :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    echo '.... onBlabla="statut (\'idA\', \''.$joueur.'\');" ..........';

    Ca semble être le B-A-BA, non ?...


    N.B. L'input de type hidden, c'est bien aussi (je l'utilise aussi... quand nécessaire)

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Bonsoir,

    J'ai donc essayé plusieurs solutions et je ne reçois pas la reponse de ma fonction envoi, ni l'alert ni le resultat, ni le cerclage de idA :

    J'ai donc un fichier php ->http://www.monsite.fr/index.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $jour=2;
    $cl_nom_j="toto";
    ?>
    <head>
    <script type="application/javascript" src="http://www.monsite.fr/codejs.js"></script>
    </head>
    <body>
    <input type="text" placeholder="" name="nom_j" id="nom_j"  class="form-control" value="'.$cl_nom_j.'" onblur="envoi(\'nom_j\',0,'.$client.')" style="text-transform: uppercase">
    </body>

    J'ai donc monfichier codejs.js
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function envoi (idA,nb,client) {
    alert ('toto');
    var idC = document.getElementById(idA).value;
    var xhr_object = null;
    if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else {alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
    xhr_object.open("POST", "sauve.php?joueur="+joueur+"&nb="+nb+"&champ="+idA+"&"+idA+"="+idC, true);
    xhr_object.onreadystatechange = function() {if(xhr_object.readyState == 4) {}}
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    var data = "joueur="+joueur+"&nb="+nb+"&champ="+idA+"&"+idA+"="+idC;
    xhr_object.send(data);
    var idC = document.getElementById(idA); idC.style.border="2px solid #00FF00";
    }


    Par contre si j’insère le code de la fonction envoi directement dans le code de la page index.php, la ça fonctionne, mais ça ne me sert a rien, le but étant de sortir le code javascript pour alléger le code de la page index.php.

    Merci de votre aide.

    Olivier

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    xhr_object.open("POST", "sauve.php?joueur="+joueur+"&nb="+nb+"&champ="+idA+"&"+idA+"="+idC, true);
    en POST, les paramètres sont à passer dans le send et non dans l'url.

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    Tout dépend de si tu essayes de les récupérer coté serveur dans le $_POST ou le $_GET
    On peut tout a fait faire du post et récupérer les données passées dans l'url en GET.
    L'intérêt en est discutable, mais c'est techniquement réalisable.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    L'intérêt en est discutable, mais c'est techniquement réalisable.
    Je me sers assez souvent des deux conjointement, c'est une façon de distinguer différents types de variables pour rendre plus lisible la construction de la requête et plus pratique la récupération des variables (selon moi). Mais effectivement c'est discutable et peut-être pas dans les meilleures normes.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/04/2008, 18h36
  2. Passer un tableau PHP en argument dans une fonction javascript ?
    Par The Molo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/05/2007, 12h31
  3. récupérer un tableau PHP dans une fonction javascript
    Par aztec dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/05/2007, 22h11
  4. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2006, 14h08
  5. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Langage
    Réponses: 3
    Dernier message: 12/06/2006, 14h02

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