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 :

Transmission de variable


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    DevJunior
    Inscrit en
    Août 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : DevJunior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Transmission de variable
    Bonjour,

    Je reviens vers vous car j'ai un petit soucis :/

    J'essaye de transmettre une variable d'une page à l'autre mais je ne sais pas comment m'y prendre, j'ai essayé un truc mais ça ne marche pas (ça serait trop simple )

    Vu que mon code est assez complexe voici un exemple:

    Je suis sur la page1.php, il y a juste un bouton:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <button type="button" id="button">exemple</button>
    $('#button').click(function() {
       window.location.href = "./page2.php";
      $('h1').text('test'); 
     });
    Sur la page2.php, j'ai juste un h1
    En gros je voudrais afficher "test" dans le h1 de ma page2.php

    Mais je n'ai aucune idée de comment m'y prendre, ce n'est pas en ajax qu'il faut faire ça ? (je ne connais pas du tout ajax)

  2. #2
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 749
    Points
    4 749
    Par défaut
    il y plusieurs façons de faire :
    par un cookie,
    par un post direct
    ou via un formulaire POST ou GET
    via Ajax, effectivement
    ou encore via une variable de session PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    DevJunior
    Inscrit en
    Août 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : DevJunior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Re
    Citation Envoyé par psychadelic Voir le message
    il y plusieurs façons de faire :
    par un cookie,
    par un post direct
    ou via un formulaire POST ou GET
    via Ajax, effectivement
    ou encore via une variable de session PHP
    J'ai regardé pour la session php (c'est ce qui me semble le plus pratique dans mon cas vu que le reste de mon script est en php).
    J'ai suivi cette réponse: https://stackoverflow.com/questions/...a-php-variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $('body').preprend("<?php $_SESSION['test'] = 'test' ?>");
    Mais ça ne fonctionne pas.

    Je ne trouve aucune autre solution pour passer une variable js en session php...
    (La j'utilise du texte au lieu d'une variable pour tester si ça marche, mais ça ne marche pas)

    Edit: j'ai essayé avec POST (quitte à transmettre la variable post en session plus tard si j'en ai besoin) et ça ne fonctionne pas non plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $.ajax({
                url: './page2.php',
                type: 'POST',
                data: {test: 'test'}
            }); // Un var_dump($_POST) sur page2.php me donne un array 0

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

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $('#button').click(function() {
       var le_texte = "c'est un test";
       window.location.href = "./page2.php?txt=" + encodeURI(le_texte) + "";
     });
    On récupère en PHP avec $_GET :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $txt = ( !empty($_GET['txt']) )? urldecode($_GET['txt']) : '';

  5. #5
    Futur Membre du Club
    Homme Profil pro
    DevJunior
    Inscrit en
    Août 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : DevJunior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Re
    Salut,
    Ce code fonctionnerait mais il faudrait que je vérifie la variable GET pour checker que l'utilisateur ne modifie pas l'url, et donc je préférerai éviter

  6. #6
    Invité
    Invité(e)
    Par défaut
    ALors tu peux utiliser une SESSION :
    • mise en SESSION dans le 1er fichier
    • récupération dans le 2ème (sans besoin de le "transmettre")

    Où est le problème ?

    Tu ne donnes pas assez d'infos :
    • comment est créée cette variable (elle est générée en PHP, ou coté modifiée client en JS) ?

    Si c'est une variable modifiée via JavaScript (dans le 1er fichier), alors il faudra passer par Ajax pour aller créer la SESSION.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    DevJunior
    Inscrit en
    Août 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : DevJunior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Bordel dans absoluments tous les exemples que je trouve sur le net ils utilisent GET pour faire un $_SESSION[] = $_GET[]

    On peut pas directement initialiser une session php avec ajax ou quoi ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Si tu ne veux pas récupérer $_GET, alors tu voudrais quoi ?

    En $_POST, ça irait ?

  9. #9
    Futur Membre du Club
    Homme Profil pro
    DevJunior
    Inscrit en
    Août 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : DevJunior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Si tu ne veux pas récupérer $_GET, alors tu voudrais quoi ?

    En $_POST, ça irait ?
    Oui!

    C'est ce que j'ai essayé de faire d'ailleurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $.ajax({
                url: './page2.php',
                type: 'POST',
                data: {test: 'test'}
            }); // Un var_dump($_POST) sur page2.php me donne un array 0
    Tu sais d'où viens l'erreur ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Voici une idée qui m'est venue...
    • création dynamique d'un formulaire, avec un champ hidden


    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
    16
    $('#button').click(function() {
    	var my_href = "./page2.php";
    	var my_texte = "c'est le texte test !";
    	// création dynamique d'un formulaire, avec un champ hidden
    	var my_form = document.createElement('form');
    //	my_form.name = 'myForm'; // (pas nécessaire)
    	my_form.method = 'POST';
    	my_form.action = my_href;
    	my_input = document.createElement('input');
    	my_input.type = 'hidden'; // champ hidden
    	my_input.name = 'recup_txt'; // nom du champ (à récupérer )
    	my_input.value = my_texte;
    	$(my_form).append(my_input);
    	$('body').append(my_form);
    	my_form.submit(); // on soumet
    });
    Sans Ajax.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php $txt = ( !empty($_POST['recup_txt']) )? $_POST['recup_txt'] : ''; ?>
     
    <h1><?php echo $txt; ?></h1>

  11. #11
    Futur Membre du Club
    Homme Profil pro
    DevJunior
    Inscrit en
    Août 2018
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : DevJunior
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2018
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Re
    Je suis obligé d'utiliser un formulaire ?

  12. #12
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 749
    Points
    4 749
    Par défaut
    Faudrait dabord que tu nous dise d'ou provient ta valeur initiale que tu veux transmettre, si elle vient du serveur ou si elle vient du poste client

    -- si elle vient du serveur tu la met dans une variable de session

    -- si elle vient du client, alors il la saisie forcément dans un champs input et dans ce cas elle est transmise au serveur via un formulaire qui ensuite peut la placer dans une une variable de session

  13. #13
    Invité
    Invité(e)
    Par défaut
    @psychadelic

    3ème possibilité : elle est calculée/transformée via JavaScript.

    Et mon idée n'est pas si mauvaise....
    et d'ailleurs, comme on utilise jQuery, on peut simplifier la syntaxe :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // jQuery
    $('#button').on('click', function() {
    	var my_href = "./page2.php";
    	var my_texte = "c'est le texte test !";
     
    	// création dynamique d'un formulaire, avec un champ hidden
    	var my_form = $('<form>').attr({ 'method':'POST','action':my_href });
    	my_input = $('<input>').attr({ 'type':'hidden','name':'recup_txt','value':my_texte });
    	$(my_form).append(my_input);
    	$('body').append(my_form);
    	my_form.submit(); // on soumet
    });
    Dernière modification par Invité ; 24/08/2018 à 19h16.

  14. #14
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 749
    Points
    4 749
    Par défaut
    ah oui, on peut alors l'envoyer via une requête Ajax à un script php qui la place dans une variable de session

Discussions similaires

  1. probleme transmission de variable toute bete
    Par mereyj dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/03/2006, 20h18
  2. [Sécurité] PHP 5 transmission de variables
    Par messier79 dans le forum Langage
    Réponses: 18
    Dernier message: 09/01/2006, 14h05
  3. Transmission de variable avec GET et header
    Par spirou dans le forum Langage
    Réponses: 10
    Dernier message: 03/01/2006, 19h04
  4. [FLASH MX] Transmission de variables entre 2 swf
    Par totoche dans le forum Flash
    Réponses: 3
    Dernier message: 12/10/2005, 15h54
  5. transmission de variables
    Par nicerico dans le forum ASP
    Réponses: 14
    Dernier message: 16/08/2004, 16h20

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