Как получить доступ к переменным сеанса и установить их в javascript?
в коде я поставил Session
С некоторыми данными.
Session["usedData"] = "sample data";
и вопрос в том, как я могу получить значение сеанса (в моем примере; "Пример данных") в javascript и установить Session["usedData"]
С новым значением?
14 ответов:
доступ и назначение переменной сеанса с помощью Javascript:
назначение ASP.NET переменная сеанса с использованием Javascript:
<script type="text/javascript"> function SetUserName() { var userName = "Shekhar Shete"; '<%Session["UserName"] = "' + userName + '"; %>'; alert('<%=Session["UserName"] %>'); } </script>
доступ ASP.NET переменная сеанса с использованием Javascript:
<script type="text/javascript"> function GetUserName() { var username = '<%= Session["UserName"] %>'; alert(username ); } </script>
вы не можете открыть
Session
непосредственно в JavaScript.Вы можете сделать скрытое поле и передать его на свою страницу, а затем использовать JavaScript, чтобы получить объект через
document.getElementById
Javascript не может напрямую устанавливать значения сеанса. Для установки значений сеанса из javascript я делаю вызов ajax следующим образом.
в файле ASPx или 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() } ); }); });
на сервере
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"] ?? ""; } }
для получения значений сеанса, как сказал Шекхар и Раджив
var firstName = '<%= Session["FirstName"] ?? "" %>';
надеюсь, что это помогает.
предполагая, что вы имеете в виду "JavaScript на стороне клиента" - тогда вы не можете, по крайней мере, не напрямую.
данные сеанса хранятся на сервере, поэтому код на стороне клиента не может видеть его без связи с сервером.
для доступа к нему вы должны сделать HTTP-запрос и иметь программу на стороне сервера изменить / прочитать и вернуть данные.
присвоить значение скрытому полю в файле с выделенным кодом. Доступ к этому значению в javascript, как обычный элемент управления HTML.
вы не можете установить переменные сеанса на стороне сеанса из
Javascript
. Если вы хотите сделать это, вам нужно создатьAJAX
POST чтобы обновить это на сервер хотя если выбор автомобиля является важным событием, это может быть просто легче POST этого.
вы также можете установить переменную в свойстве и вызвать ее из js:
на стороне сервера :
Protected ReadOnly Property wasFieldEditedStatus() As Boolean Get Return If((wasFieldEdited), "true", "false") End Get End Property
а потом в javascript:
alert("The wasFieldEdited Value: <%= wasFieldEditedStatus %>" );
сначала создайте метод в коде позади, чтобы установить сеанс:
[System.Web.Services.WebMethod] public static void SetSession(int id) { Page objp = new Page(); objp.Session["IdBalanceSheet"] = id; }
затем вызовите его со стороны клиента:
function ChangeSession(values) { PageMethods.SetSession(values); }
вы должны установить EnablePageMethods в true:
<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>
Я искал решение этой проблемы, пока я не нашел очень простое решение для доступа к переменным сессии, предполагая, что вы используете .файл php на стороне сервера. Надеюсь, что он отвечает на часть вопроса:
доступ к сессии значение
<script type="text/javascript"> var value = <?php echo $_SESSION['key']; ?>; console.log(value); </script>
Edit : лучший пример ниже, который вы можете попробовать phpfiddle.org, на вкладке "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>
установить значение сессии
передайте ему переменную чего угодно, вы можете хотеть. например,
$you = 13; $_SESSION['user_id'] = $you;
Это должно работать, хотя не проверял.
Если вы хотите прочитать значение сеанса в javascript.Этот код поможет вам.
<script type='text/javascript'> var userID='@Session["userID"]'; </script>
это чит, но вы можете сделать это, отправить значение на северную сторону в качестве параметра
<script> var myVar = "hello" window.location.href = window.location.href.replace(/[\?#].*|$/, "?param=" + myVar); //Send the variable to the server side </script>
и со стороны сервера, получить параметр
string myVar = Request.QueryString["param"]; Session["SessionName"] = myVar;
надеюсь, что это помогает
Я использовал мой .php-файл, чтобы положить необходимые на сессиях
$_SESSION['название'] = $phparray["имя"]; $ajaxoutput['название'] =$phparray["наименование"];
в моем .js файл, который я использовал
sessionStorage.setItem ("имя", ajaxreturnedarray ["имя"]);
и я получил это с помощью
var myName= sessionStorage.getItem ("имя");
в других .js файлы или в том же .js файлы
Если я сохраню его как есть, он будет возвращать то же самое во все времена, даже если вы вышли из системы. поэтому при выходе из системы я сделал
sessionStorage.setItem ("имя","");
используя это я опустошил локальную переменную. я использовал этот процесс в одностраничных сеансах входа/выхода из системы. я надеюсь, что этот способ будет работать для вас, потому что он работал для меня. плз, дайте мне знать ваш опыт.
чтобы изменить данные сеанса с сервера после создания страницы, вам нужно будет использовать AJAX или даже JQuery, чтобы выполнить эту работу. Оба они могут установить соединение с сервером, чтобы изменить данные сеанса и получить возвращенные данные из этого соединения.
<?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>
теперь нам нужно сделать небольшой php скрипт под названием modifySession.php для внесения изменений в данные сеанса и отправки данных обратно, если это необходимо.
<?php session_start(); $_SESSION['usedData'] = $_GET['newData']; //filter if necessary echo $_SESSION['usedData']; // Post results back if necessary ?>
Это должно достичь желаемых результатов, которые вы ищете изменение сеанса на стороне сервера с помощью PHP / AJAX.