Comment accéder aux variables de Session et les configurer en javascript?

en code-derrière j'ai placé Session avec quelques données.

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

et la question Est comment obtenir la valeur de la Session(dans mon exemple;" sample data") en javascript et définir Session["usedData"] avec une nouvelle valeur?

61
demandé sur Karl Fazer 2013-03-20 13:17:31

14 réponses

accéder et assigner la Variable de Session en utilisant Javascript:

Assigning the ASP.NET Variable de Session utilisant Javascript:

 <script type="text/javascript">
function SetUserName()
{
    var userName = "Shekhar Shete";
    '<%Session["UserName"] = "' + userName + '"; %>';
     alert('<%=Session["UserName"] %>');
}
</script>

accès ASP.NET variable de Session utilisant Javascript:

<script type="text/javascript">
    function GetUserName()
    {

        var username = '<%= Session["UserName"] %>';
        alert(username );
    }
</script>
55
répondu SHEKHAR SHETE 2016-07-21 06:52:28

vous ne pouvez pas accéder à Session directement en JavaScript.

vous pouvez créer un champ caché et le passer à votre page et ensuite utiliser JavaScript pour récupérer l'objet via document.getElementById

16
répondu Darren 2013-03-20 09:18:50

Essayez Cette

var sessionValue = '<%=Session["usedData"]%>'
11
répondu Rajeev Kumar 2013-03-20 09:18:35

Javascript ne peut pas définir directement les valeurs de session. Pour définir les valeurs de session à partir de javascript je fais appel ajax comme suit.

Vérifier En Ligne

au fichier ASPx ou html,

 <script type="text/javascript">
 $(function(){
   //Getting values from session and saving in javascript variable.
   // But this will be executed only at document.ready.
   var firstName = '<%= Session["FirstName"] ?? "" %>';
   var lastName = '<%= Session["LastName"] ?? "" %>';

   $("#FirstName").val(firstName);
   $("#LastName").val(lastName);

   $('Button').click(function(){
     //Posting values to save in session
     $.post(document.URL+'?mode=ajax', 
     {'FirstName':$("#FirstName").val(),
     'LastName':$("#LastName").val()
     } );
   });

 });

côté serveur,

protected void Page_Load(object sender, EventArgs e)
 {
      if(Request.QueryString["mode"] != null && Request.QueryString["mode"] == "ajax")
      {
        //Saving the variables in session. Variables are posted by ajax.
        Session["FirstName"] = Request.Form["FirstName"] ?? "";
        Session["LastName"] = Request.Form["LastName"] ?? "";
      }
 }

Pour obtenir des valeurs de session, comme dit par Shekhar et Rajeev

var firstName = '<%= Session["FirstName"] ?? "" %>';

Espérons que cette aide.

8
répondu Ganesh 2014-09-23 14:16:34

en supposant que vous voulez dire "côté client JavaScript" - alors vous ne pouvez pas, du moins pas directement.

les données de session sont stockées sur le serveur, de sorte que le code côté client ne peut pas les voir sans communiquer avec le serveur.

pour y accéder, vous devez faire une demande HTTP et avoir un programme côté serveur pour modifier / lire et retourner les données.

6
répondu Quentin 2013-03-20 09:19:19

Assignez une valeur à un champ caché dans le fichier code-behind. Accédez à cette valeur dans votre javascript comme un contrôle HTML normal.

3
répondu btevfik 2013-03-20 09:19:10

vous ne pouvez pas définir les variables de session à côté de Javascript . Si vous voulez faire cela, vous devez créer un AJAX POST pour mettre à jour cela sur le serveur bien que si la sélection d'une voiture est un événement majeur, il pourrait juste être plus facile de POST cela.

2
répondu Mohaimin Moin 2016-04-11 11:41:00

vous pouvez également définir la variable dans une propriété et l'appeler DE js:

côté 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 %>" );
1
répondu Off The Gold 2016-02-03 20:17:43

créez d'abord une méthode en code derrière pour définir session:

 [System.Web.Services.WebMethod]
 public static void SetSession(int id)
 {
     Page objp = new Page();
     objp.Session["IdBalanceSheet"] = id;
 }

alors appelez - le du côté du client:

function ChangeSession(values) {
     PageMethods.SetSession(values);
     }

vous devez définir EnablePageMethods vrai:

<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>
1
répondu Behnam 2016-07-29 08:02:53

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 côté serveur. Espérons qu'il réponde à 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>

éditer: meilleur exemple ci-dessous, que vous pouvez essayer sur phpfiddle.org, à 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 session

transmettre une variable de ce que, vous pouvez. par exemple,

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

ça devrait marcher, mais pas testé.

1
répondu Matthieu 2016-09-08 04:29:55

si vous voulez lire la valeur de la Session en javascript.Ce code vous aider.

<script type='text/javascript'> var userID='@Session["userID"]'; </script>

1
répondu Chandan Rajbhar 2017-11-15 08:41:08

c'est un triche, mais vous pouvez le faire, envoyer la valeur à sever side 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;

espérons que cette aide

0
répondu KMR 2017-07-03 10:23:10

j'ai utilisé mon .fichier php à mettre requis dans les sessions

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

dans mon .fichier js, j'ai utilisé

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

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

var myname= sessionStorage.getItem ("nom");

dans les autres .fichiers js ou dans même .fichiers js

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

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

en utilisant cette variable locale vidée. j'ai utilisé ce processus dans les sessions de connexion/déconnexion d'une page Web. j'espère que cette façon de travailler pour pour vous, car il a travaillé pour moi. svp laissez-moi savoir vos expériences.

0
répondu Srinivasa Reddy 2018-03-14 11:31:17

pour modifier les données de session à partir du serveur après la création de page, vous auriez besoin D'utiliser AJAX ou même JQuery pour faire le travail. Tous les deux peuvent faire une connexion au serveur pour modifier les données de session et récupérer les données retournées à partir 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>

maintenant nous avons besoin de faire un petit script php appelé modifySession.php apporte des modifications aux données de session et renvoie 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 atteindre le résultats souhaités que vous recherchez en modifiant la session via le côté serveur en utilisant PHP/AJAX.

0
répondu shader2199 2018-05-12 20:50:41