在 JavaScript 中获取当前会话值?
Posted
技术标签:
【中文标题】在 JavaScript 中获取当前会话值?【英文标题】:Get Current Session Value in JavaScript? 【发布时间】:2014-06-25 16:07:41 【问题描述】:我有一个场景,我在浏览器中打开我的 Web 应用程序,但在两个单独的选项卡中。
在一个选项卡中,我从应用程序中退出,结果所有会话值都变为空。在另一个选项卡中,我单击了 web 应用程序中的锚标记。在锚标记的 jquery-on 点击事件中,我检查了会话值。在这里,我应该将会话设置为 null(因为我从另一个选项卡中注销了应用程序),但是我以登录用户的身份获取会话值(可能是因为没有发生页面刷新)。
我的想法是检查 jQuery 上的会话,如果会话为空,则使应用程序注销,否则显示一个弹出页面..
这是我获取会话值的代码
$(".a".click(function()
var session=var data = '@Session["UserName"]';
if(session!=null)
//Show popup
else
//Show loginpage
))
如何在 jQuery 中获取当前会话值?
【问题讨论】:
***.com/questions/15519454/…的可能重复 将“用户名”设置为 cookie 【参考方案1】:会话是服务器端的东西,你不能使用 jQuery 访问它。
您可以编写一个 Http 处理程序(如果有,它将共享 sessionid)并使用 $.ajax
从那里返回值。
【讨论】:
【参考方案2】:另一种方法是 在你的 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"]';
);
【讨论】:
否,它返回 session 的值而不是 null 在加载视图之前确保您的会话具有填充值。 返回的不是'someKey'的最新值,而是页面初始化时的值。【参考方案3】:使用 Javascript 访问和分配会话变量:
使用 Javascript 分配 ASP.NET 会话变量:
<script type="text/javascript">
function SetUserName()
var userName = "Shekhar Shete";
'<%Session["UserName"] = "' + userName + '"; %>';
alert('<%=Session["UserName"] %>');
</script>
使用 Javascript 访问 ASP.NET Session 变量:
<script type="text/javascript">
function GetUserName()
var username = '<%= Session["UserName"] %>';
alert(username );
</script>
Already Answered here
【讨论】:
@SparAby 你也仔细写了 QUESTION TITLE,因为你提到了“Javascript 中的会话值”,因此我在这里发布! 如何通过单独阅读问题标题来发布答案。请同时阅读问题...【参考方案4】:我测试了这个方法,它对我有用。希望它有用。
假设您有一个名为 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>
现在您可以在 index.php 文件中的另一个脚本块中访问变量 userId,甚至可以在链接到 index.php 的 .js 文件中访问变量
例如。在 index.js 文件中
$(document).ready(function()
alert(userId);
)
它可能非常有用,因为它使我们能够将用户名和其他用户数据存储为 ajax 查询中的 cookie,用于更新数据库表等。
如果您不想使用 javascript 变量来包含信息,则可以使用带有“type='hidden'; 的输入”
例如。在你的 index.php 文件中,写:
<?php echo "<input type='hidden' id='username' value='".$_SESSION['username']."'/>";
?>
但是,如果用户要求浏览器显示页面的源代码,这样用户就可以看到隐藏的输入。在源视图中,隐藏的输入及其内容是可见的。你可能会觉得不受欢迎。
【讨论】:
问题似乎是关于 .NET,而不是 PHP。 与 OP 问题无关...PHP 不能作为 .Net 问题的解决方案。【参考方案5】:我解决的方法是,我在控制器中编写了一个函数,并通过 jquery 点击事件上的 ajax 访问它
首先,我要感谢@Stefano Altieri 让我了解如何实现上述场景,您说得对,当会话到期时,我们无法从客户端访问当前会话值。
另外我想说的是,正确阅读问题将有助于我们仔细回答问题。
【讨论】:
通过在此处阅读您的文本“当会话到期时,我们无法从客户端访问当前会话值”。我想知道“EXPIRES”时如何访问会话变量?不!你不能访问 EXPIRED 会话吗?另外我想说的是,正确地写你的帖子也有助于我们理解..! :)【参考方案6】:我正在使用 C# mvc 应用程序。我已经像这样在 Controller 类中创建了一个会话
string description = accessDB.LookupSomeString(key, ImpDate);
this.Session["description"] = description;
在视图中,我们访问会话值并将其存储在一个变量中,像这样 (这是在 $.ajax 中,但我认为它应该在任何 jquery 中工作)
var Sessiondescription = '@Session["description"]';
alert(Sessiondescription);
【讨论】:
【参考方案7】:这样试试
var username= "<%= Session["UserName"]%>";
【讨论】:
@SparAby,这可能是由于双引号 " 没有正确分隔。您可以尝试 var username= "";【参考方案8】:使用 id 或 class 和 value 获取隐藏字段并在 javascript 中获取它。
Javascript var session = $('#session').val(); //通过jQuery获取
【讨论】:
【参考方案9】:<script type="text/javascript">
$(document).ready(function()
var userId=<%: Session["userId"] %>;
alert(userId);
)
</script>
**Get the current session value in jQuery**
【讨论】:
【参考方案10】:我就是这样用的->
<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>
【讨论】:
【参考方案11】:在您的页面中使用 Razor 代码会容易得多。
在我的示例中,我需要使用会话变量设置隐藏字段。
$('#clearFormButton').click(function()
ResetForm();
$('#hiddenJobId').val(@Session["jobid"]);
);
就这么简单。请记住,您需要在 Session 前面加上 @ 符号以表示剃刀语法。
【讨论】:
以上是关于在 JavaScript 中获取当前会话值?的主要内容,如果未能解决你的问题,请参考以下文章