在JavaScript中获取当前会话值?

时间:2014-05-08 10:12:38

标签: jquery asp.net session

我有一个场景,我在浏览器中打开我的Web应用程序,但是在两个单独的选项卡中。

在一个选项卡中,我从应用程序注销,因此所有会话值都变为空。在另一个选项卡中,我点击了webapplication中的锚标记。在锚标记的jquery-on click事件中,我检查了会话值。在这里,我应该将会话设置为null(因为我从其他选项卡中注销了应用程序),但我正在以登录用户身份获取会话值(可能是因为没有发生页面刷新)。

我的想法是检查jQuery上的会话,如果会话为null,则使应用程序注销,否则显示一个弹出页面。

这是我获取会话值的代码

$(".a".click(function(){
   var session=var data = '@Session["UserName"]';
   if(session!=null){
    //Show popup
   }
   else{
    //Show loginpage
   }

}))

如何在jQuery中获取当前会话值?

11 个答案:

答案 0 :(得分:37)

会话是服务器端的事情,你不能使用jQuery访问它。 您可以编写一个Http处理程序(如果有的话,将共享sessionid)并使用$.ajax从那里返回值。

答案 1 :(得分:17)

另一种方法是 在你的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"]';
    }); 

答案 2 :(得分:5)

访问&amp;使用Javascript分配会话变量:

使用Javascript分配ASP.NET会话变量:

 <script type="text/javascript">
function SetUserName()
{
    var userName = "Shekhar Shete";
    '<%Session["UserName"] = "' + userName + '"; %>';
     alert('<%=Session["UserName"] %>');
}
</script>

使用Javascript访问ASP.NET会话变量:

<script type="text/javascript">
    function GetUserName()
    {

        var username = '<%= Session["UserName"] %>';
        alert(username );
    }
</script>

Already Answered here

答案 3 :(得分:4)

我解决的方法是,我在控制器中编写了一个函数,并通过jquery click事件上的ajax访问它

首先,我要感谢@Stefano Altieri让我了解如何实现上述方案,您绝对正确我们无法在会话到期时从客户端访问当前会话值。

我还想说,正确阅读问题将有助于我们仔细回答这个问题。

答案 4 :(得分:3)

我测试了这种方法,它对我有用。希望它有用。

假设您有一个名为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']."'/>";
?>

然而,这样,如果用户要求浏览器显示页面的源代码,则可以看到隐藏的输入。在源视图中,隐藏的输入与其内容可见。你可能会发现这是不可取的。

答案 5 :(得分:0)

试试这个

var username= "<%= Session["UserName"]%>";

答案 6 :(得分:0)

将带有id或class的隐藏字段和值与会话一起使用并在javascript中获取。

的Javascript var session = $('#session')。val(); //通过jQuery获取

答案 7 :(得分:0)

<script type="text/javascript">
$(document).ready(function(){

   var userId=<%: Session["userId"] %>;
    alert(userId);   
})   
</script>
**Get the current session value in jQuery**

答案 8 :(得分:0)

这就是我的用法->

<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>

答案 9 :(得分:0)

我正在使用C#mvc应用程序。我已经在Controller类中创建了这样的会话

string description = accessDB.LookupSomeString(key, ImpDate);
this.Session["description"] = description;    

在视图中,我们访问会话值并将其存储在变量中,如下所示 (这在$ .ajax中,但是我认为它应该在任何jquery中都可以使用)

var Sessiondescription = '@Session["description"]';
alert(Sessiondescription);

答案 10 :(得分:0)

在页面中使用Razor代码会容易得多。

在我的示例中,我需要使用会话变量设置一个隐藏字段。

private <T extends RealmModel> void insertRealmList(final List<T> objects) {
    try (Realm realmInstance = Realm.getDefaultInstance()) {
        realmInstance.executeTransaction(realm -> {
            for (T object : objects) {
                realmInstance.insertOrUpdate(object);
            }
        });
    }
}

那很容易。请记住,您需要在会话前添加@符号以表示剃须刀语法。