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 :

modifier une variable de session via javascript


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 489
    Par défaut modifier une variable de session via javascript
    Bonjour,

    Je voudrais modifier une variable de session par du code javascript.

    dans l'en-tête de ma page, je met le script suivant :
    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
    <script type='text/JavaScript'>
     
    	function getXhr() {
    		var xhr = null; 
    		if(window.XMLHttpRequest) // Firefox et autres
    			xhr = new XMLHttpRequest(); 
    		else if(window.ActiveXObject){ // Internet Explorer 
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		}
    		else { // XMLHttpRequest non supporté par le navigateur 
    			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    			xhr = false; 
    		} 
    	return xhr;
    	}
     
    	function go(requete) {
    		var xhr = getXhr();
    		// On défini ce qu'on va faire quand on aura la réponse
    		xhr.onreadystatechange = function(){
    					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    					if(xhr.readyState == 4 && xhr.status == 200){
    						alert(xhr.responseText);
    					}
    					}
    		xhr.open("GET",requete,true);
    		xhr.send(null);
    	}
    </script>
    dans ma page, j'ai une liste déroulante, et je veux lancer la modification de la variable lors de l'evenement onchange de la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <td class="texte1">La vitesse du vent est en
    				<form method="post">
    				<select class="texte1" onchange="javascript:go('majSession.php?value='+this.value,'GET');">
    					<option <?php if($_SESSION['wind_unit'] == "noeuds") { echo 'selected'; } ?>>noeuds
    					<option <?php if($_SESSION['wind_unit'] == "km/h") { echo 'selected'; } ?>>km/h
     
    				</select>
    				</form>
    			</td>
    où majSession.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $_SESSION['wind_unit'] = $_GET['value'];
    ?>
    Mais quand j'execute ça, la variable de session n'est pas mise à jour.

    Auriez-vous une idée du problème ?

    Merci,

    Nico

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    ton ajax est considéré comme une autre session je pense

    il doit falloir envoyer aussi le session Id
    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
    Invité
    Invité(e)
    Par défaut
    salut,

    pour ma part, je tablerais bien sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="javascript:go('majSession.php?value='+this.value,'GET');"
    ou je mettrais plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    onchange="javascript:go('http://jaime.la.viande/majSession.php?value='+this.value);"
    //mettre un nom de serveur, sinon c'est considéré comme fichier local et pe
    //desactivé par mesure de securité...
    voici un code qui "marche"
    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
     
    <html>
    <head>
    <script type="text/javascript">
     
    	function getXhr() {
    		var xhr = null; 
    		if(window.XMLHttpRequest) // Firefox et autres
    			xhr = new XMLHttpRequest(); 
    		else if(window.ActiveXObject){ // Internet Explorer 
    			try {
    				xhr = new ActiveXObject("Msxml2.XMLHTTP");
    			} catch (e) {
    				xhr = new ActiveXObject("Microsoft.XMLHTTP");
    			}
    		}
    		else { // XMLHttpRequest non supporté par le navigateur 
    			alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    			xhr = false; 
    		} 
    	return xhr;
    	}
     
    	function go(requete) {
    		var xhr = getXhr();
    		// On défini ce qu'on va faire quand on aura la réponse
    		xhr.onreadystatechange = function(){
    			// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    			if(xhr.readyState == 4 && xhr.status == 200){
    				alert(xhr.responseText);//remarque, si  pas d'alerte, c'est que pas de retour serveur...
    			}
    		}
    		xhr.open("GET",requete,true);
    		xhr.send(null);
    	}
    </script>
    </head>
    <body>
    <select class="texte1" onchange="javascript:go('http://jaime.la.viande/majSession.php?value='+this.value,'GET');">
    	<option value="noeuds">noeuds</option>
    	<option value="km">km/h</option>
     
    </select>
     
    </body>
    </html>
    Tu remarqueras au passage les balises option que tu n'avais pas fermées!
    Apres tu peux rajouter tes echos, pour le value, c'est un détail...

    ps: c'est marrant, j'avais pompé exactement la même requête je sais plus où y a 5 ans déjà!

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par DiverSIG Voir le message
    où majSession.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $_SESSION['wind_unit'] = $_GET['value'];
    ?>
    Mais quand j'execute ça, la variable de session n'est pas mise à jour.

    Auriez-vous une idée du problème ?
    Il manquerait pas un session_start quelque part ?
    Citation Envoyé par SpaceFrog Voir le message
    ton ajax est considéré comme une autre session je pense

    il doit falloir envoyer aussi le session Id
    Plus exactement, il va falloir vérifier qu'un cookie de session existe bien, si ce n'est pas le cas, récupérer l'identifiant de session dans l'URL et l'ajouter à ton get.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 489
    Par défaut
    effectivement, en mettant un session_start() dans majSession.php, ça marche nickel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    session_start();
    $_SESSION['wind_unit'] = $_GET['value'];
    ?>
    Merci,

    Nico

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

Discussions similaires

  1. Modifier une variable de session sur onclick
    Par nicolas2603 dans le forum Langage
    Réponses: 13
    Dernier message: 21/11/2014, 11h37
  2. Réponses: 6
    Dernier message: 15/11/2007, 13h52
  3. modifier une variable de Session
    Par mouvma dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/09/2007, 17h20
  4. [JSP] [Javascript] Modifier une variable de Session
    Par fady005 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 05/04/2007, 11h48
  5. [WebForms]Comment utiliser une variable de session depuis JavaScript ?
    Par ThunderBib dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 05/05/2006, 14h01

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