试图在JS中获取Session值我不断获得文字代码

时间:2013-12-24 15:49:05

标签: javascript asp.net session

每次在ASP.NET中登录时,我都会将用户用户名放在会话中,如下所示

//..... 
if (PasswordHash.PasswordHash.ValidatePassword(LoginForm.Password, password))
{
    e.Authenticated = true;
    Session["Username"] = LoginForm.UserName;
}
//.....

现在我需要通过JS访问它,我想我可以这样做:

    if (won) {
        var username = '<%= Session["Username"] %>'
        alert("Congrats " + username + ", you won!");
    }

但我得到的是Congrats <%= Session["Username"] %>, you won!。这是为什么?根据{{​​3}}和this问题中的答案判断,我应该可以像这样访问它。

2 个答案:

答案 0 :(得分:2)

您可以将用户名编码为div或javascript变量。

将此添加到您从

调用javascript的页面
<div id="userinfo" data-user-name="<%= Session["Username"] %>">

然后使用jquery

读取数据
$('#userinfo').data('user-name')

对于javascript,将以下内容添加到您的页面

<script>
 var username = "<%= Session["Username"] %>";
</script>

然后你可以在代码的其他部分使用你的变量。

答案 1 :(得分:1)

我可以建议使用这样的东西:

        if (won) {  
         $.ajax({
                   type: "POST",
                   url: "SomePage.aspx/GetUserName",        
                   contentType: "application/json; charset=utf-8",
                   dataType: "text",
                   success: function (name) {
                      alert("Congrats " + name+ ", you won!");        
                   }
               });
        }

    [System.Web.Services.WebMethod]
    public static string GetUserName()
    {
    ...
      if (PasswordHash.PasswordHash.ValidatePassword(LoginForm.Password, password))
      {  
         return LoginForm.UserName;
      }
    ...
    }