如何使用jQuery读取会话值

Man*_*ngh 3 c# asp.net jquery session-variables

我正在使用c#和jQuery.

我在下面的代码中使用C#代码设置会话变量.

if (!string.IsNullOrEmpty(results))
{
    string[] array = results.Split(',');
    string firstName = array[0];
    string lastName = array[1];
    string activeCardNo = array[2];
    string memberShipTier = array[3];
    string accessToken = array[4];

    Session["skyFirstName"] = firstName.ToString();
    Session["skyLastName"] = lastName.ToString();
    Session["skyActiveCardNo"] = activeCardNo.ToString();
    Session["skyMemberShipTier"] = memberShipTier.ToString();
    Session["boolSignOn"] = "true";
    Response.Redirect(fromPage);
    Response.End();
}
Run Code Online (Sandbox Code Playgroud)

现在我想Session["skyFirstName"]使用jQuery 读取这些值(),以便我可以在我的元素中设置.请建议.

Dar*_*rov 6

会话值存储在服务器上,无法使用客户端javascript读取它们.实现此目的的一种方法是公开一些服务器端脚本或通用处理程序,它将返回给定键的相应会话值,然后使用jQuery向此处理程序发送AJAX请求并读取该值.您应该知道,通过这样做,用户可以读取他的所有会话值.请注意,从安全角度来看,暴露用于编写会话值的相同脚本可能是灾难性的.

这是一个例子:

public class ReadSession : IHttpHandler, IReadOnlySessionState
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";
        context.Response.Write(new JavaScriptSerializer().Serialize(new
        {
            Key = context.Request["key"],
            Value = context.Session[context.Request["key"]]
        }));
    }

    public bool IsReusable 
    { 
        get { return true; } 
    }
}
Run Code Online (Sandbox Code Playgroud)

然后查询它:

$.getJSON('/ReadSession.ashx', { key: 'skyFirstName' }, function(result) {
    alert(result.Value);
});
Run Code Online (Sandbox Code Playgroud)