W kodowaniu ustawiłem Session
trochę danych.
Session["usedData"] = "sample data";
A pytanie brzmi: jak mogę pobrać wartość sesji (w moim przykładzie; „przykładowe dane”) w javascript i ustawić Session["usedData"]
nową wartość?
javascript
.net
session
Mehmet Ince
źródło
źródło
Odpowiedzi:
Dostęp i przypisywanie zmiennej sesji za pomocą JavaScript:
Przypisywanie zmiennej sesji ASP.NET przy użyciu JavaScript:
<script type="text/javascript"> function SetUserName() { var userName = "Shekhar Shete"; '<%Session["UserName"] = "' + userName + '"; %>'; alert('<%=Session["UserName"] %>'); } </script>
Dostęp do zmiennej sesji ASP.NET przy użyciu JavaScript:
<script type="text/javascript"> function GetUserName() { var username = '<%= Session["UserName"] %>'; alert(username ); } </script>
źródło
+ userName +
Nie możesz uzyskać dostępu
Session
bezpośrednio w JavaScript.Możesz utworzyć ukryte pole i przekazać je na swoją stronę, a następnie użyć JavaScript, aby pobrać obiekt za pośrednictwem
document.getElementById
źródło
JavaScript nie może bezpośrednio ustawiać wartości sesji. Aby ustawić wartości sesji z javascript, wykonuję wywołanie ajax w następujący sposób.
Sprawdź online
W pliku ASPx lub 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() } ); }); });
Po stronie serwera
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"] ?? ""; } }
Za uzyskanie wartości sesji, jak powiedzieli Shekhar i Rajeev
var firstName = '<%= Session["FirstName"] ?? "" %>';
Mam nadzieję że to pomoże.
źródło
Spróbuj tego
var sessionValue = '<%=Session["usedData"]%>'
źródło
Zakładając, że masz na myśli „JavaScript po stronie klienta” - wtedy nie możesz, przynajmniej nie bezpośrednio.
Dane sesji są przechowywane na serwerze, więc kod po stronie klienta nie może ich zobaczyć bez komunikacji z serwerem.
Aby uzyskać do niego dostęp, należy wysłać żądanie HTTP i poprosić program po stronie serwera o modyfikację / odczyt i zwrot danych.
źródło
Przypisz wartość do ukrytego pola w pliku związanym z kodem. Uzyskaj dostęp do tej wartości w swoim javascript jak do zwykłej kontrolki HTML.
źródło
Nie możesz ustawić zmiennych sesji po stronie sesji z
Javascript
. Jeśli chcesz to zrobić, musisz utworzyćAJAX
POST, aby zaktualizować to na serwerze, ale jeśli wybór samochodu jest ważnym wydarzeniem, może być łatwiejsze POST .źródło
najpierw utwórz metodę w kodzie, aby ustawić sesję:
[System.Web.Services.WebMethod] public static void SetSession(int id) { Page objp = new Page(); objp.Session["IdBalanceSheet"] = id; }
następnie zadzwoń po stronie klienta:
function ChangeSession(values) { PageMethods.SetSession(values); }
powinieneś ustawić EnablePageMethods na true:
<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>
źródło
Jeśli chcesz przeczytać wartość sesji w javascript, ten kod pomoże ci.
<script type='text/javascript'> var userID='@Session["userID"]'; </script>
źródło
Możesz także ustawić zmienną we właściwości i wywołać ją z js:
Po stronie serwera:
Protected ReadOnly Property wasFieldEditedStatus() As Boolean Get Return If((wasFieldEdited), "true", "false") End Get End Property
A potem w javascript:
alert("The wasFieldEdited Value: <%= wasFieldEditedStatus %>" );
źródło
Szukałem rozwiązania tego problemu, dopóki nie znalazłem bardzo prostego rozwiązania dostępu do zmiennych sesji, zakładając, że używasz pliku .php po stronie serwera. Mam nadzieję, że odpowiada na część pytania:
wartość sesji dostępu
<script type="text/javascript"> var value = <?php echo $_SESSION['key']; ?>; console.log(value); </script>
Edycja: lepszy przykład poniżej, który możesz wypróbować na phpfiddle.org, w zakładce "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>
ustaw wartość sesji
przekazać mu dowolną zmienną, jeśli chcesz. na przykład,
$you = 13; $_SESSION['user_id'] = $you;
To powinno działać, chociaż tego nie testowałem.
źródło
To oszustwo, ale możesz to zrobić, wyślij wartość na stronę serwera jako parametr
<script> var myVar = "hello" window.location.href = window.location.href.replace(/[\?#].*|$/, "?param=" + myVar); //Send the variable to the server side </script>
A po stronie serwera pobierz parametr
string myVar = Request.QueryString["param"]; Session["SessionName"] = myVar;
mam nadzieję że to pomoże
źródło
Aby zmodyfikować dane sesji z serwera po utworzeniu strony, musisz użyć AJAX lub nawet JQuery, aby wykonać zadanie. Obaj mogą nawiązać połączenie z serwerem, aby zmodyfikować dane sesji i odzyskać dane zwrócone z tego połączenia.
<?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>
Teraz musimy zrobić mały skrypt php o nazwie modifiedSession.php, aby wprowadzić zmiany w danych sesji i przesłać dane z powrotem, jeśli to konieczne.
<?php session_start(); $_SESSION['usedData'] = $_GET['newData']; //filter if necessary echo $_SESSION['usedData']; // Post results back if necessary ?>
Powinno to przynieść oczekiwane rezultaty, modyfikując sesję po stronie serwera za pomocą PHP / AJAX.
źródło
Oto, co zadziałało dla mnie. Javascript ma to.
<script type="text/javascript"> var deptname = ''; </script>
C # za kodem ma to - można go umieścić na stronie wzorcowej, aby resetował zmienną przy każdej zmianie strony.
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); }
Dodaj ten kod do przycisku kliknij, aby potwierdzić zmianę nazwy działu.
źródło
Użyłem mojego pliku .php, aby umieścić wymagane w sesjach
w moim pliku .js, którego użyłem
i odzyskałem to za pomocą
w innych plikach .js lub w tych samych plikach .js
jeśli zachowam to tak, jak jest, będzie zwracać to samo przez cały czas, nawet jeśli się wylogujesz. więc wylogowując się zrobiłem
używając tej opróżniłem zmienną lokalną. Użyłem tego procesu w sesjach logowania / wylogowania z pojedynczej strony internetowej. Mam nadzieję, że ten sposób zadziała dla Ciebie, ponieważ zadziałał dla mnie. plz daj mi znać swoje doświadczenia.
źródło
Udało mi się rozwiązać podobny problem z prostymi parametrami adresu URL i automatycznym odświeżaniem.
Możesz pobrać wartości z parametrów adresu URL, zrobić z nimi co chcesz i po prostu odświeżyć stronę.
HTML:
<a href=\"webpage.aspx?parameterName=parameterValue"> LinkText </a>
DO#:
string variable = Request.QueryString["parameterName"]; if (parameterName!= null) { Session["sessionVariable"] += parameterName; Response.AddHeader("REFRESH", "1;URL=webpage.aspx"); }
źródło
<?php session_start(); $_SESSION['mydata']="some text"; ?> <script> var myfirstdata="<?php echo $_SESSION['mydata'];?>"; </script>
źródło
Prawdopodobnie jakiś przebieg przy takim podejściu. Wydaje się, że ta data wraca do zmiennej sesji. Ciąg, który zwraca, wyświetla datę javascript, ale kiedy próbuję manipulować ciągiem, wyświetla kod javascript.
ob_start(); ?> <script type="text/javascript"> var d = new Date(); document.write(d); </script> <? $_SESSION["date"] = ob_get_contents(); ob_end_clean(); echo $_SESSION["date"]; // displays the date echo substr($_SESSION["date"],28); // displays 'script"> var d = new Date(); document.write(d);'
źródło