web-dev-qa-db-ger.com

Wie kann ich auf Session-Variablen zugreifen und diese in Javascript einstellen?

Im Code-Behind habe ich Session mit einigen Daten gesetzt.

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

Und die Frage ist, wie kann ich den Session-Wert (in meinem Beispiel; "Beispieldaten") in Javascript erhalten und Session["usedData"] mit einem neuen Wert setzen?

67
Mehmet Ince

Zugreifen auf und Zuweisen der Sitzungsvariablen mit Javascript:

Zuweisen der ASP.NET-Sitzungsvariablen mithilfe von Javascript:

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

Zugriff auf ASP.NET-Sitzungsvariable mit Javascript:

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

        var username = '<%= Session["UserName"] %>';
        alert(username );
    }
</script>
56
SHEKHAR SHETE

Sie können nicht direkt in JavaScript auf Session zugreifen.

Sie können ein ausgeblendetes Feld erstellen und an Ihre Seite übergeben. Anschließend verwenden Sie JavaScript, um das Objekt über document.getElementById abzurufen.

19
Darren

Javascript kann die Sitzungswerte nicht direkt setzen. Zum Einstellen der Sitzungswerte von Javascript benutze ich ajax wie folgt.

Online prüfen

Bei ASPx-Datei oder 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()
     } );
   });

 });

Auf der Serverseite

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"] ?? "";
      }
 }

Für das Erhalten von Sitzungswerten, wie von Shekhar und Rajeev gesagt

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

Hoffe das hilft.

11
Ganesh

Versuche dies

var sessionValue = '<%=Session["usedData"]%>'
11
Rajeev Kumar

Angenommen, Sie meinen "clientseitiges JavaScript" - dann können Sie es zumindest nicht direkt.

Die Sitzungsdaten werden auf dem Server gespeichert, sodass der clientseitige Code sie nicht ohne Kommunikation mit dem Server erkennen kann.

Um darauf zuzugreifen, müssen Sie eine HTTP-Anforderung stellen und ein serverseitiges Programm ändern, lesen und die Daten zurückgeben.

7
Quentin

Weisen Sie einem versteckten Feld in der Code-Behind-Datei einen Wert zu. Greifen Sie wie in einem normalen HTML-Steuerelement auf diesen Wert in Ihrem Javascript zu.

4
btevfik

Sitzungsseitige Sitzungsvariablen können nicht von Javascript festgelegt werden. Wenn Sie dies tun möchten, müssen Sie eine AJAXPOST erstellen, um dies auf dem server zu aktualisieren. Wenn die Auswahl eines Autos jedoch ein großes Ereignis ist, ist es möglicherweise einfacher, POST ZU POSTEN diese.

2
Mohaimin Moin

Sie können die Variable auch in einer Eigenschaft festlegen und von js aufrufen:

Auf der Serverseite:

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

Und dann im Javascript:

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

Ich habe nach einer Lösung für dieses Problem gesucht, bis ich eine sehr einfache Lösung für den Zugriff auf die Sitzungsvariablen gefunden habe, vorausgesetzt, Sie verwenden auf dem Server eine .php-Datei. Hoffe, es beantwortet einen Teil der Frage:

Zugriff auf Sitzungswert

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

Edit: besseres Beispiel, das Sie auf phpfiddle.org auf der Registerkarte "Codespace" ausprobieren können

<!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>

Sitzungswert setzen

übergeben Sie eine Variable von was auch immer Sie möchten. z.B,

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

Das sollte funktionieren, das hat es nicht getestet.

1
Matthieu

erstellen Sie zuerst eine Methode hinter dem Code, um die Sitzung festzulegen:

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

dann rufen Sie es vom Client aus an: 

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

sie sollten EnablePageMethods auf true setzen:

<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>
1
Behnam

Wenn Sie den Session-Wert in Javascript lesen möchten, hilft dieser Code für Sie.

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

1
Chandan Rajbhar

Hier ist, was für mich gearbeitet hat. Javascript hat dies.

<script type="text/javascript">
var deptname = '';
</script>

C # Code dahinter hat dies - es könnte auf die Masterseite gesetzt werden, so dass es var bei jedem Seitenwechsel zurücksetzt.

        String csname1 = "LoadScript";
        Type cstype = p.GetType();

        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = p.ClientScript;

        // Check to see if the startup script is already registered.
        if (!cs.IsStartupScriptRegistered(cstype, csname1))
        {
            String cstext1 = funct;
            cs.RegisterStartupScript(cstype, csname1, "deptname = 'accounting'", true);
        }
        else
        {
            String cstext = funct;
            cs.RegisterClientScriptBlock(cstype, csname1, "deptname ='accounting'",true);
        }

Fügen Sie diesen Code einem Klick auf eine Schaltfläche hinzu, um die Änderung des Abteilungsnamens zu bestätigen.

alert(deptname);
0
code-it

Ich konnte ein ähnliches Problem mit einfachen URL-Parametern und der automatischen Aktualisierung lösen.

Sie können die Werte aus den URL-Parametern abrufen, mit ihnen beliebig machen und die Seite einfach aktualisieren.

HTML:

<a href=\"webpage.aspx?parameterName=parameterValue"> LinkText </a>

C #:

string variable = Request.QueryString["parameterName"];
if (parameterName!= null)
{
   Session["sessionVariable"] += parameterName;
   Response.AddHeader("REFRESH", "1;URL=webpage.aspx");
}
0
Rui Ruivo

Um die Sitzungsdaten vom Server nach der Seitenerstellung zu ändern, müssen Sie AJAX oder sogar JQuery verwenden, um die Aufgabe zu erledigen. Beide können eine Verbindung zum Server herstellen, um Sitzungsdaten zu ändern und von dieser Verbindung zurückgegebene Daten abzurufen.

<?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>

Jetzt müssen wir ein kleines PHP-Skript namens modifySession.php erstellen, um Änderungen an den Sitzungsdaten vorzunehmen und die Daten bei Bedarf zurückzusenden.

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

Dies sollte die gewünschten Ergebnisse erzielen, die Sie suchen, indem Sie die Sitzung über die Serverseite mit PHP/AJAX ändern.

0
shader2199

ich habe meine .php-Datei verwendet, um die erforderlichen Sitzungen in Sitzungen einzufügen

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

in meiner .js-Datei habe ich verwendet 

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

und ich habe das mit abgerufen

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

in anderen .js-Dateien oder in denselben .js-Dateien

wenn ich es so belasse wie es ist, wird es immer wieder das gleiche sein, auch wenn Sie sich abgemeldet haben. also beim abmelden habe ich gemacht

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

mit dieser leerte ich die lokale Variable. diesen prozess habe ich in ein- und auslog-sitzungen verwendet. Ich hoffe, dass dieser Weg für Sie funktionieren wird, weil er für mich funktioniert hat. Bitte teilen Sie mir Ihre Erfahrungen mit. 

0
Srinivasa Reddy

Dies ist ein Cheat, aber Sie können dies tun, indem Sie den Wert als Parameter an die Sever-Seite senden

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

Rufen Sie den Parameter von der Serverseite ab

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

hoffe das hilft

0
KMR