我正在使用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();
}
现在,我想使用jQuery读取这些值(
Session["skyFirstName"]
),以便可以在元素中进行设置。请提出建议。 最佳答案
会话值存储在服务器上,无法使用客户端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; }
}
}
然后查询它:
$.getJSON('/ReadSession.ashx', { key: 'skyFirstName' }, function(result) {
alert(result.Value);
});