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?
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>
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.
Javascript kann die Sitzungswerte nicht direkt setzen. Zum Einstellen der Sitzungswerte von Javascript benutze ich ajax wie folgt.
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.
Versuche dies
var sessionValue = '<%=Session["usedData"]%>'
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.
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.
Sitzungsseitige Sitzungsvariablen können nicht von Javascript
festgelegt werden. Wenn Sie dies tun möchten, müssen Sie eine AJAX
POST 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.
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 %>" );
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.
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>
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>
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);
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");
}
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.
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.
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