如何使用 jquery 在会话中存储值。我正在使用以下代码
var Link = '<%=Session["Link"]%>';
从会话中获取数据。如何进行反向过程。
问题:
I need this in my master page. so i cant use .ajax{}.
吉萨
如何使用 jquery 在会话中存储值。我正在使用以下代码
var Link = '<%=Session["Link"]%>';
从会话中获取数据。如何进行反向过程。
问题:
I need this in my master page. so i cant use .ajax{}.
吉萨
您可能需要设置一个HTTP 处理程序或类似的东西来接受请求并将内容存储在 Session 中。Visual Studio 在解决方案视图的“添加”菜单中的某处有这个。(如果您使用的是 ASP.NET MVC,您只需设置另一个操作而不是通用处理程序。)
由于这些值可能具有不同的类型(int、string 等),并且您不希望恶意用户插入他们认为合适的任何会话密钥,因此您可能需要设置一个分支来确定如何处理每个钥匙。像这样的东西(在您创建的处理程序内):
string key = context.Request.QueryString["key"].ToString();
string val = context.Request.QueryString["val"].ToString();
if(key == "AshDiffuserID"){
int ash_diffuser_id = Convert.ToInt32(val);
Session["AshDiffuserID"] = ash_diffuser_id;
}
else if(key == "PesterchumHandle") {
string handle = val;
Session["PesterchumHandle"] = handle;
} else // etc...
之后,您需要通过 jquery 设置一个post HTTP 请求,该请求将您需要的任何值放入那些“key”和“val”字段中。
$.post(
'url/to/your/handler.ashx',
{key: "PesterchumHandle", val: "carcinoGenetecist"}
);
我浪费了一整天的时间来解决这个问题,而这只是一个快速解决方案。在 PageMethod 调用期间,会话 ID 不会与请求 URL 一起传递,因此会触发新的 session_start 事件。我们只需要在调用页面方法之前设置准确的请求路径,这样就不会触发新的会话开始事件。
if ('<%= HttpContext.Current.Session.IsCookieless %>==True') {
//need to pass session id in request path
PageMethods.set_path('<%= System.Web.Configuration.WebConfigurationManager.AppSettings("WebRoot") %>(S(<%=Session.SessionID%>))/secure/PageName.aspx');
}
PageMethods.PageMethodName(param1,param2, CallSuccess, CallFailed);
您将需要通过 jquery 向服务器发送 ajax 帖子。