我有一个场景,我在浏览器中打开我的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中获取当前会话值?
答案 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>
答案 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);
}
});
}
}
那很容易。请记住,您需要在会话前添加@符号以表示剃须刀语法。