Ответ 1
Сессия - это серверная вещь, вы не можете получить к ней доступ с помощью jQuery.
Вы можете написать обработчик Http (который будет совместно использовать sessionid, если он есть) и вернуть значение с помощью $.ajax
.
У меня есть сценарий, когда я открываю свое веб-приложение в браузере, но в двух отдельных вкладках.
В одной вкладке я вышел из приложения, и в результате все значения сеанса становятся нулевыми. На другой вкладке я нажал на тег привязки в веб-приложении. В событии jquery-on click для привязки я проверил значение сеанса. Здесь я должен получить сеанс как null (поскольку я вышел из приложения с другой вкладки), но я получаю значение сеанса как зарегистрированное пользователем (возможно, потому, что обновление страницы не происходит).
Моя идея - проверить сеанс на jQuery, и если сеанс имеет значение null, выйдите из приложения, иначе отобразите всплывающее окно.
Здесь мой код для получения значения сеанса
$(".a".click(function(){
var session=var data = '@Session["UserName"]';
if(session!=null){
//Show popup
}
else{
//Show loginpage
}
}))
Как получить текущее значение сеанса в jQuery?
Сессия - это серверная вещь, вы не можете получить к ней доступ с помощью jQuery.
Вы можете написать обработчик Http (который будет совместно использовать sessionid, если он есть) и вернуть значение с помощью $.ajax
.
Другой подход в вашем CHTML
<input type="hidden" id="hdnSession" data-value="@Request.RequestContext.HttpContext.Session['someKey']" />
и сценарий
var sessionValue= $("#hdnSession").data('value');
или вы можете получить доступ напрямую
jQuery(document).ready(function ($) {
var value = '@Request.RequestContext.HttpContext.Session["someKey"]';
});
Доступ и назначение переменной сеанса с помощью 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>
Как я решил, я написал функцию в контроллере и получил доступ к ней через ajax при событии click jQuery
Прежде всего, я хочу поблагодарить @Stefano Altieri за то, что он дал мне представление о том, как реализовать описанный выше сценарий, вы абсолютно правы, мы не можем получить доступ к текущему значению сеанса с клиентов по окончании сеанса.
Также я хотел бы сказать, что правильное чтение вопроса поможет нам тщательно ответить на вопрос.
Я протестировал этот метод, и это сработало для меня. надеюсь, что это будет полезно.
предполагая, что у вас есть файл с именем index. php
и когда пользователь входит в систему, вы сохраняете имя пользователя в php-сессии; ех. $_SESSION [ 'имя пользователя'];
вы можете сделать что-то вроде этого в файле index.php
<script type='text/javascript'>
var userName = "<?php echo $_SESSION['username'] ?>"; //dont forget to place the PHP code block inside the quotation
</script>
теперь вы можете получить доступ к переменной userId в другом блоке script, размещенном в файле index.php, или даже в файле .js, связанном с index.php
ех. в файле index.js
$(document).ready(function(){
alert(userId);
})
он может быть очень полезен, поскольку он позволяет нам использовать имя пользователя и другие пользовательские данные stoerd как файлы cookie в ajax-запросах, для обновления таблиц базы данных и т.д.
Если вы не хотите использовать переменную javascript, чтобы содержать информацию, вы можете использовать вход с "type = 'hidden";
ех. в файле index.php, напишите:
<?php echo "<input type='hidden' id='username' value='".$_SESSION['username']."'/>";
?>
однако, таким образом пользователь может видеть скрытый ввод, если он попросит браузер показать исходный код страницы. в исходном представлении скрытый ввод отображается с его содержимым. вы можете обнаружить, что это нежелательно.
Возьмите скрытое поле с идентификатором или классом и значением с помощью сеанса и получите его в javascript.
Javascript var session = $('# session'). val();//получить jQuery
попробуйте это
var username= "<%= Session["UserName"]%>";
<script type="text/javascript">
$(document).ready(function(){
var userId=<%: Session["userId"] %>;
alert(userId);
})
</script>
**Get the current session value in jQuery**
вот как я использовал ->
<body onkeypress='myFunction(event)'>
<input type='hidden' id='homepage' value='$_SESSION[homepage]'>
<script>
function myFunction(event){var x = event.which;if(x == 13){var homepage
=document.getElementById('homepage').value;
window.location.href=homepage;}else{
document.getElementById("h1").innerHTML = "<h1> Press <i> ENTER </i> to go back... </h1>";}}
</script>
</body>
Я использую приложение С# mvc. Я создал сеанс в классе Controller, как это
string description = accessDB.LookupSomeString(key, ImpDate);
this.Session["description"] = description;
в представлении мы получаем доступ к значению сеанса и сохраняем его в переменной, например, так (это внутри $.ajax, но я думаю, что оно должно работать в любом jquery)
var Sessiondescription = '@Session["description"]';
alert(Sessiondescription);