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

AJAX Discussion :

[AJAX] [XAJAX]Transmition de variable


Sujet :

AJAX

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut [AJAX] [XAJAX]Transmition de variable
    Salut a tous!
    Je suis un gros débutant, un vrai noob de XAJAX, alors pas de " OLOLZ T NUL SA VE RIEN DIR SE KE TA FAIT", des explication concrète serait bien mieux^^.


    Partie xajax:

    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
    function afficher()
    {
            $reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
    		$contenue='Nom: '.$donnees_formulaire['nom'].' et Pseudo: '.$donnees_formulaire['pseudo'].' ';
    		if(isset($donnees_formulaire['nom'] && $donnees_formulaire['pseudo'])){
    		$reponse->assign('block', 'innerHTML', $contenue);//Enfin, on change le contenu du div block par le contenu de $chat
    		}
    		else{
    		$reponse->assign('block', 'innerHTML', 'MER IL AY FOU');//Enfin, on change le contenu du div block par le contenu de $chat
    		}
            return $reponse;
    }
    function envoyer($donnees_formulaire)
    {
            $reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
            $reponse->clear('pseudo', 'nom');//On vide le champ contenant le message du posteur
            $reponse->call('xajax_afficher');//On appelle la fonction afficher pour afficher les messages et que le posteur voit son message à l'écran
            return $reponse;
    }
    et partie form html:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="submit" value="Envoyer les valeurs" onclick="xajax_envoyer(xajax.getFormValues('this.form')); return false;" />
    						   <input type="submit" value="Lire les valeurs" onclick="xajax_afficher(); return false;" />
    J'aimerais transmettre les variables du formulaire avec getFormValues a la fonction afficher, en passant par la fonction envoyer.
    Bref faire comme la, sauf qu'il faudrait transmettre les variables de la f. envoyer a la f. afficher...
    Je sais vraiment pas comment faire :'(


    Merci d'avance

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour et bienvenue sur nos forum
    Citation Envoyé par Krorys Voir le message
    pas de " OLOLZ T NUL SA VE RIEN DIR SE KE TA FAIT",
    C'est pas trop dans les habitudes ici
    Citation Envoyé par Krorys Voir le message
    J'aimerais transmettre les variables du formulaire avec getFormValues a la fonction afficher, en passant par la fonction envoyer.
    Heu ... pourquoi ?
    Si c'est des éléments de ton formulaire, tu peux y accéder directement à partir de chaque fonction ...
    Sinon, il suffit d'utiliser une variable globale (déclarée hors de toute fonction).

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Bonjour et merci de ta réponse

    Eh bien justement, comment y accéder alors?

    Et sinon, pour la variable global, je devrais la définir dans le "onclick" ?

    Encore merci, et bonne journée

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Krorys Voir le message
    Eh bien justement, comment y accéder alors?
    En JavaScript "standard" (sans librairie), tu donnes un id à tes éléments
    un id doit toujours être unique dans la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" id="un_input">
    et tu y accèdes en JS de n'importe où dans la page (d'une fonction, d'un onclick ou autre) avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('un_input')
    Citation Envoyé par Krorys Voir le message
    Et sinon, pour la variable global, je devrais la définir dans le "onclick" ?
    Définir ?
    Tu dois la déclarer dans la partie <head> de ta page réservée au code JavaScript, mais pas dans une fonction.
    Ensuite, tu peux l'utiliser (la lire ou la modifier) de n'importe où dans ton code, donc à la fois dans ta fonction afficher() et dans ta fonction envoyer().

    A+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Merci beaucoup pour la réponse.
    Je vais essayer le truc du JS. ( je n'y connais rien, et l'AJAX se rapproche beaucoup a du JS, c'est pour ça que j'utilise le XAJAX qui est plus en PHP...^^ )

    Jvai voir aussi pour la variable global.

    Grand merci, je reposterais si j'ai besoin encore d'aide, forum super actif et généreux x)

    Sinon, bonne continuation a tous

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Krorys Voir le message
    ( je n'y connais rien, et l'AJAX se rapproche beaucoup a du JS, c'est pour ça que j'utilise le XAJAX qui est plus en PHP...^^ )

    Ouuhlààà !

    Belle phrase qui nécessite quelques précisions si tu dois te pencher plus avant sur ces problèmes
    • Ajax c'est du JavaScript (il s'agit plutôt d'une "technique" faisant appel à un objet spécifique XMLHttpRequest)
    • Xajax (que je n'utilise pas) n'est pas "plus PHP" même si pour toi le fonctionnement en est plus compréhensible : c'est aussi du JavaScript, mais "habillé" pour masquer certaines complexités
    • Ajax n'a pas "besoin" de PHP : il permet d'appeler une page sur le serveur, c'est tout. Si c'est une page PHP, elle s'exécute et renvoie une réponse, mais il peut aussi s'agir simplement d'ouvrir un fichier texte

    Mais ça sera certainement plus clair si tu lis ça

    Sinon, bonne continuation à toi aussi

    A+

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Ah...ok

    Bon, eh bien me revoila, encore a ne rien comprendre ...

    Voici le code de ma page, je ne comprends pas ou ça merde :'(

    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
    48
    49
    50
    51
    52
    53
    54
    <?php
    //
    //Notre fonction PHP pour afficher les messages
    //
    function afficher()
    {
            $reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
    		// $contenue = 'Nom: '.$nom.' et Pseudo: '.$pseudo.' ';
    		$nom = "<script language='Javascript'> document.getElementById('nom'); </script>";
    		$contenue = 'Nom: '.$nom.' ';
    		$reponse->assign('block', 'innerHTML', $contenue);//Enfin, on change le contenu du div block par le contenu de $contenue
            return $reponse;
    }
    function envoyer($donnees_formulaire)
    {
            $reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
             $reponse->clear('pseudo', 'nom');//On vide le champ contenant le message du posteur
            $reponse->call('xajax_afficher');//On appelle la fonction afficher pour afficher les messages et que le posteur voit son message à l'écran
            return $reponse;
    }
    //Ouverture de la librairie xajax
    //Instanciation d'un objet de la classe xajax, puis déclaration de nos fonctions php
    //
    @require_once('./xajax_core/xajax.inc.php');
    $xajax = new xajax(); //On initialise l'objet xajax
    $xajax->setCharEncoding('iso-8859-1');//On précise à xAjax qu'on souhaite travailler en ISO-8859-1
    $xajax->register(XAJAX_FUNCTION, 'afficher');//on enregistre nos fonctions
    $xajax->processRequest();//Fonction qui va se charger de générer le Javascript, à partir des données que l'on a fournies à xAjax APRES AVOIR DECLARE NOS FONCTIONS
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
            <head>
                    <title>Test xAjax</title>
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    				 <?php $xajax->printJavascript(); /* Affiche le Javascript */?>
     
    				// <?php global $nom, $pseudo; ?> Essai de global ici, sans résultat...
            </head>
            <body>
                    <div id="block">Ici est mort un brave petit div nommé block...</div>
                    <form action="">
                            <fieldset>
                             <legend>Entrer ici votre message :</legend>
                             <div>
                              <label>Nom : <input type="text" size="15" id="nom" /></label><br />
                              <label>Pseudo : <input type="text" size="50" id="pseudo" /></label><br />
                              <input type="submit" value="Envoyer les valeurs" onclick="xajax_envoyer(xajax.getFormValues('this.form')); return false;" />
    						   <input type="submit" value="Lire les valeurs" onclick="xajax_afficher(); return false;" />
                             </div>
                            </fieldset>
                    </form>
            </body>
    </html>
    Que faire?^^
    Quand je fais avec ce code il ne marque que "Nom: " sans la variable...
    Je desespère...

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    D'une part il s'agit ici de code PHP (qui s'exécute donc sur le serveur) n'espère pas y récupérer la valeur d'un élément affiché dans le navigateur (donc côté client).
    D'autre part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('nom');
    correspond à l'objet lui-même en supposant que c'est la valeur de cet objet que tu veux récupérer c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('nom').value;
    Il ne s'agit pas ici de problématiques Ajax, mais ce genre d'erreurs risque de planter ton code et donc l'exécution de l'appel Ajax qui suit (chronologiquement).

    Par contre, je vois pas ce qu'est censé faire ton code

    A+

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Mon code, c'est juste un ptit test.
    Et avec "document.getElementById('nom').value;" cela ne change rien, toujours "Nom: " sans la variable de fin...
    Et pour les globals j'ai essayé, en vain aussi...
    Oui, un vrai noob, c'est ça que je suis

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Krorys Voir le message
    Oui, un vrai noob, c'est ça que je suis
    On en est tous passés par là

    Relis la 1° phase de mon post précédent : je pense que c'est sur cette logique générale qu'il faut que tu creuses afin de l'avoir bien en tête.
    Beaucoup de ce que tu considères comme des problèmes deviendront évident après ça

    Par contre, tout le reste sera insoluble avant

    A+

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par E.Bzz Voir le message
    Relis la 1° phase de mon post précédent : je pense que c'est sur cette logique générale qu'il faut que tu creuses afin de l'avoir bien en tête.
    Pour préciser : il faut absolument que tu comprennes la distinction client/serveur, la notion de génération de code via PHP, la logique des requêtes/réponses et la chronologie de l'ensemble.
    Tu pourras ainsi, comme tu as essayé, faire interagir JavaScript <-> PHP sans poser de problème de cohérence ...

    A+

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Donc:
    JS = Client
    PHP = Serveur

    Impossible d'intéragir ensemble?><
    Je ne vois pas ou tu veux en venir

    EDIT:Jdois etre désespérant hein...mais je suis noob pour le moment

  13. #13
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Krorys Voir le message
    Je ne vois pas ou tu veux en venir
    Là où je veux en venir, c'est que tu as déjà tous les éléments.
    Il n'y a rien à expliquer de plus tant que tu n'as pas compris toi le fonctionnement client/serveur (et donc la chronologie et les interactions entre PHP et HTML+JavaScript).

    Pour être clair : apprends les bases

    A+

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    C'est bon, j'ai réussi avec les $_GET.
    Désolé pour la gene occasioné.
    Je laisse le code au cas ou.
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?php
    //
    //Notre fonction PHP pour afficher les messages
    //
    function afficher()
    {
            $reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
                    $reponse->clear('pseudo', 'nom');//On vide le champ contenant le message du posteur
                    $nom = $_GET['nom'];
                    $pseudo = $_GET['pseudo'];
                    if($_GET['nom'] == "" || $_GET['pseudo'] == ""){
                    $contenue = 'Vous n\'avez rien mis! <br> Réessayez ;) ';
                    }
                    else {
                    $contenue = 'Nom: '.$nom.'<br> Pseudo: '.$pseudo.' ';
                    }
                    $reponse->assign('block', 'innerHTML', $contenue);//Enfin, on change le contenu du div block par le contenu de $chat
            return $reponse;
    }
    function envoyer($donnees_formulaire)
    {
            $reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
            // $reponse->clear('pseudo', 'nom');//On vide le champ contenant le message du posteur
                    // $nom = $donnees_formulaire['nom'];
                    // $pseudo = $donnees_formulaire['pseudo'];
            $reponse->call('xajax_afficher');//On appelle la fonction afficher pour afficher les messages et que le posteur voit son message à l'écran
            return $reponse;
    }
    //Ouverture de la librairie xajax
    //Instanciation d'un objet de la classe xajax, puis déclaration de nos fonctions php
    //
    @require_once('./xajax_core/xajax.inc.php');
    $xajax = new xajax(); //On initialise l'objet xajax
    $xajax->setCharEncoding('iso-8859-1');//On précise à xAjax qu'on souhaite travailler en ISO-8859-1
    $xajax->register(XAJAX_FUNCTION, 'afficher');//on enregistre nos fonctions
    $xajax->processRequest();//Fonction qui va se charger de générer le Javascript, à partir des données que l'on a fournies à xAjax APRES AVOIR DECLARE NOS FONCTIONS
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
            <head>
                    <title>Test xAjax</title>
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    				 <?php $xajax->printJavascript(); /* Affiche le Javascript */ ?>
                    <script type="text/javascript">
                    function refresh()//script javascript qui va appeler le fonction afficher toutes les 5 secondes
                    {
                            // xajax_afficher();
    					    // var nom = document.getElementById('nom');
                            setTimeout(refresh, 5000);
                    }
                    </script>
            </head>
            <body>
                    <div id="block">Ici est mort un brave petit div nommé block...</div>
                    <form action="" name="form1">
                            <fieldset>
                             <legend>Entrer ici votre message :</legend>
                             <div>
                              <label>Nom : <input type="text" size="15" id="nom" name="nom"/></label><br />
                              <label>Pseudo : <input type="text" size="50" id="pseudo" name="pseudo"/></label><br />
                              <input type="submit" value="Envoyer" onclick="var nom = document.getElementById('nom'); var pseudo = document.getElementById('pseudo');" />
    						   <input type="button" value="Lire les valeurs" onclick="xajax_afficher(); return false;" />
                             </div>
                            </fieldset>
                    </form>
                    <script type="text/javascript">
                            refresh();//On appelle la fonction refresh() pour lancer le script
                    </script>
            </body>
    </html>

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

Discussions similaires

  1. [AJAX] [Xajax] Message d'erreur avec XAJAX
    Par annekeuss dans le forum AJAX
    Réponses: 10
    Dernier message: 17/05/2010, 01h21
  2. [AJAX] Faire passer une variable $_FILE par AJAX
    Par Mazike dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/03/2007, 12h22
  3. [AJAX] xajax : réponse en html et pas XML
    Par mewax dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/01/2007, 15h17
  4. [AJAX] Comment recuperer des variable
    Par Emcy dans le forum Général JavaScript
    Réponses: 45
    Dernier message: 28/11/2006, 09h21
  5. [AJAX] Passage d'une variable très longue avec AJAX
    Par Figaro83 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 18/09/2006, 16h53

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