97 votes

Comment accéder aux variables de session et les définir en javascript ?

Dans le code-behind, j'ai mis Session avec quelques données.

Session["usedData"] = "sample data";

La question est la suivante : comment puis-je obtenir la valeur de la session (dans mon exemple, "données de l'échantillon") en javascript et la définir ? Session["usedData"] avec une nouvelle valeur ?

1voto

Matthieu Points 39

Je cherchais une solution à ce problème, jusqu'à ce que je trouve une solution très simple pour accéder aux variables de session, en supposant que vous utilisez un fichier .php du côté serveur. J'espère que cela répond à une partie de la question :

valeur de la session d'accès

<script type="text/javascript">        
    var value = <?php echo $_SESSION['key']; ?>;
    console.log(value);
</script>

Edit : meilleur exemple ci-dessous, que vous pouvez essayer sur phpfiddle.org, dans l'onglet "codespace".

<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <?php
    $_SESSION['key'] = 10;
    $i = $_SESSION['key'];
  ?>
 </head>
 <body>
  <p id="affichage">hello</p>

  <script type="text/javascript">
    var value =  <?php echo $i; ?>;
    $("#affichage").html(value);   
  </script>

 </body>
</html>

définir la valeur de la session

Vous pouvez lui passer une variable de n'importe quel type, par exemple,

$you = 13;
$_SESSION['user_id'] = $you;

Cela devrait fonctionner, mais je ne l'ai pas testé.

1voto

Off The Gold Points 65

Vous pouvez également définir la variable dans une propriété et l'appeler à partir de js :

Du côté du serveur :

Protected ReadOnly Property wasFieldEditedStatus() As Boolean
    Get
        Return If((wasFieldEdited), "true", "false")
    End Get
End Property

Et ensuite dans le javascript :

alert("The wasFieldEdited Value: <%= wasFieldEditedStatus %>" );

1voto

KMR Points 72

Il s'agit d'une tricherie, mais vous pouvez faire ceci, envoyer la valeur au côté sever comme paramètre

<script>
var myVar = "hello"
window.location.href = window.location.href.replace(/[\?#].*|$/, "?param=" + myVar); //Send the variable to the server side
</script>

Et du côté du serveur, récupérez le paramètre

string myVar = Request.QueryString["param"];
Session["SessionName"] = myVar;

J'espère que cela vous aidera

1voto

shader2199 Points 25

Pour modifier les données de session à partir du serveur après la création de la page, il faudrait utiliser AJAX ou même JQuery pour faire le travail. Ces deux outils peuvent établir une connexion avec le serveur pour modifier les données de session et obtenir des données en retour de cette connexion.

<?php
session_start();
$_SESSION['usedData'] = "Some Value"; //setting for now since it doesn't exist
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Modifying PHP Session Data</title>
        <script type='text/javascript'>
            var usedData = '<?php echo $_SESSION['usedData']; ?>';
            var oldDataValue = null;

            /* If function used, sends new data from input field to the
               server, then gets response from server if any. */

            function modifySession () {
                var newValue = document.getElementById("newValueData").value;

                /* You could always check the newValue here before making
                   the request so you know if its set or needs filtered. */

                var xhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");

                xhttp.onreadystatechange = function () {
                    if (this.readyState == 4 && this.status == 200) {
                        oldDataValue = usedData;
                        usedData = this.responseText; //response from php script
                        document.getElementById("sessionValue").innerHTML = usedData;
                        document.getElementById("sessionOldValue").innerHTML = oldDataValue;
                    }
                };

            xhttp.open("GET", "modifySession.php?newData="+newValue, true);
            xhttp.send(); 
            }
        </script>
    </head>
    <body>
        <h1><p>Modify Session</p></h1>

        Current Value: <div id='sessionValue' style='display:inline'><?php echo $_SESSION['usedData']; ?></div><br/>
        Old Value: <div id='sessionOldValue' style='display:inline'><?php echo $_SESSION['usedData']; ?></div><br/>

        New Value: <input type='text' id='newValueData' /><br/>
        <button onClick='modifySession()'>Change Value</button>
   </body>
</html>

Nous devons maintenant créer un petit script php appelé modifySession.php pour apporter des modifications aux données de la session et renvoyer les données si nécessaire.

<?php
session_start();
$_SESSION['usedData'] = $_GET['newData']; //filter if necessary
echo $_SESSION['usedData']; // Post results back if necessary
?>

Cela devrait permettre d'obtenir les résultats que vous recherchez en modifiant la session côté serveur à l'aide de PHP/AJAX.

0voto

Srinivasa Reddy Points 11

J'ai utilisé mon fichier .php pour mettre les données requises dans les sessions.

$_SESSION['name'] = $phparray["name"] ; $ajaxoutput['name'] =$phparray["name"] ;

Dans mon fichier .js, j'ai utilisé

sessionStorage.setItem("name", ajaxreturnedarray["name"]) ;

et je l'ai récupéré en utilisant

var myName= sessionStorage.getItem("name") ;

dans d'autres fichiers .js ou dans les mêmes fichiers .js

si je le garde tel quel, il retournera le même à tout moment même si vous vous déconnectez. donc en me déconnectant j'ai fait

sessionStorage.setItem("name", "") ;

En utilisant cette méthode, j'ai vidé la variable locale. J'ai utilisé ce processus dans des sessions de connexion/déconnexion de sites Web à page unique. J'espère que cette méthode fonctionnera pour vous, car elle a fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X