Im Code-Behind habe ich Session
mit einigen Daten gesetzt.
Session["usedData"] = "sample data";
Und die Frage ist, wie ich den Sitzungswert (in meinem Beispiel "Beispieldaten") in Javascript abrufen und Session["usedData"]
mit einem neuen Wert festlegen kann.
javascript
.net
session
Mehmet Ince
quelle
quelle
Antworten:
Zugreifen auf und Zuweisen der Sitzungsvariablen mit Javascript:
Zuweisen der ASP.NET-Sitzungsvariablen mit Javascript:
<script type="text/javascript"> function SetUserName() { var userName = "Shekhar Shete"; '<%Session["UserName"] = "' + userName + '"; %>'; alert('<%=Session["UserName"] %>'); } </script>
Zugriff auf die ASP.NET-Sitzungsvariable mit Javascript:
<script type="text/javascript"> function GetUserName() { var username = '<%= Session["UserName"] %>'; alert(username ); } </script>
quelle
+ userName +
Sie können nicht
Session
direkt in JavaScript zugreifen .Sie können ein verstecktes Feld erstellen, es an Ihre Seite übergeben und dann mithilfe von JavaScript das Objekt über abrufen
document.getElementById
quelle
Javascript kann Sitzungswerte nicht direkt festlegen. Um Sitzungswerte aus Javascript festzulegen, rufe ich Ajax wie folgt auf.
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"] ?? ""; } }
Um Sitzungswerte zu erhalten, wie von Shekhar und Rajeev gesagt
var firstName = '<%= Session["FirstName"] ?? "" %>';
Hoffe das hilft.
quelle
Versuche dies
var sessionValue = '<%=Session["usedData"]%>'
quelle
Angenommen, Sie meinen "clientseitiges JavaScript" - dann können Sie es nicht, zumindest nicht direkt.
Die Sitzungsdaten werden auf dem Server gespeichert, sodass der clientseitige Code sie nicht sehen kann, ohne mit dem Server zu kommunizieren.
Um darauf zuzugreifen, müssen Sie eine HTTP-Anfrage stellen und die Daten von einem serverseitigen Programm ändern / lesen und zurückgeben lassen.
quelle
Weisen Sie einem ausgeblendeten Feld in der CodeBehind-Datei einen Wert zu. Greifen Sie wie ein normales HTML-Steuerelement auf diesen Wert in Ihrem Javascript zu.
quelle
Sie können keine sitzungsseitigen Sitzungsvariablen von festlegen
Javascript
. Wenn Sie dies tun möchten, müssen Sie einenAJAX
POST erstellen , um dies auf dem Server zu aktualisieren. Wenn die Auswahl eines Autos ein wichtiges Ereignis ist, ist es möglicherweise einfacher, dies zu POSTEN .quelle
Erstellen Sie zuerst eine Methode im Code dahinter, um die Sitzung festzulegen:
[System.Web.Services.WebMethod] public static void SetSession(int id) { Page objp = new Page(); objp.Session["IdBalanceSheet"] = id; }
Rufen Sie es dann vom Client aus auf:
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>
quelle
Wenn Sie den Sitzungswert in Javascript lesen möchten. Dieser Code hilft Ihnen.
<script type='text/javascript'> var userID='@Session["userID"]'; </script>
quelle
Sie können die Variable auch in einer Eigenschaft festlegen und von js aus 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 %>" );
quelle
Ich suchte nach einer Lösung für dieses Problem, bis ich eine sehr einfache Lösung für den Zugriff auf die Sitzungsvariablen fand, vorausgesetzt, Sie verwenden eine .php-Datei auf der Serverseite. Hoffe, es beantwortet einen Teil der Frage:
Zugriff auf Sitzungswert
<script type="text/javascript"> var value = <?php echo $_SESSION['key']; ?>; console.log(value); </script>
Bearbeiten: Besseres Beispiel unten, 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 festlegen
Übergeben Sie eine Variable von was auch immer Sie möchten. z.B,
$you = 13; $_SESSION['user_id'] = $you;
Dies sollte funktionieren, aber nicht getestet.
quelle
Dies ist ein Cheat, aber Sie können dies tun, indem Sie den Wert als Parameter an die Server-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 auf der Serverseite den Parameter ab
string myVar = Request.QueryString["param"]; Session["SessionName"] = myVar;
hoffe das hilft
quelle
Hier ist, was für mich funktioniert hat. Javascript hat dies.
<script type="text/javascript"> var deptname = ''; </script>
Der dahinter stehende C # -Code hat dies - er könnte auf die Masterseite gesetzt werden, sodass var bei jedem Seitenwechsel zurückgesetzt wird.
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 zu einer Schaltfläche hinzu, um zu bestätigen, dass der Deptname geändert wurde.
quelle
Ich habe meine .php-Datei verwendet, um die erforderlichen in Sitzungen zu setzen
in meiner .js Datei habe ich verwendet
und ich habe dies mit abgerufen
in anderen .js-Dateien oder in denselben .js-Dateien
Wenn ich es so lasse, wie es ist, wird es immer gleich zurückgegeben, auch wenn Sie sich abgemeldet haben. Also habe ich mich beim Abmelden gemacht
mit dieser habe ich lokale Variable geleert. Ich habe diesen Prozess in einseitigen Website-Anmelde- / Abmeldesitzungen verwendet. Ich hoffe, dass dieser Weg für Sie funktioniert, weil er für mich funktioniert hat. Bitte teilen Sie mir Ihre Erfahrungen mit.
quelle
Um Sitzungsdaten vom Server nach der Seitenerstellung zu ändern, müssten Sie AJAX oder sogar JQuery verwenden, um den Job zu erledigen. Beide können eine Verbindung zum Server herstellen, um Sitzungsdaten zu ändern und zurückgegebene Daten von dieser Verbindung zurückzugewinnen.
<?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, indem Sie die Sitzung über den Server mit PHP / AJAX ändern.
quelle
Ich konnte ein ähnliches Problem mit einfachen URL-Parametern und automatischer Aktualisierung lösen.
Sie können die Werte aus den URL-Parametern abrufen, mit ihnen machen, was Sie wollen, und einfach die Seite 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"); }
quelle
<?php session_start(); $_SESSION['mydata']="some text"; ?> <script> var myfirstdata="<?php echo $_SESSION['mydata'];?>"; </script>
quelle