在 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 中获取当前会话值?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 可以从 HTML 页面中的 servlet 设置的会话属性中获取值吗

如何从不同的会话中获取 Windows 环境变量的当前值

SQL Server 主表主键自增量,如何获取主键呢?

从 Spring 的当前会话中获取用户信息?

2.2 ABP会话

Security 获取当前会话的三种方法