如何使用jquery在会话中存储值。 我使用以下代码
var Link = '<%=Session["Link"]%>';
从会话中获取数据。如何进行逆向处理。
问题:
I need this in my master page. so i cant use .ajax{}.
格塔
答案 0 :(得分:5)
您可能需要设置HTTP handler或类似的东西来接受请求并在会话中存储内容。 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...
之后,您需要设置post HTTP request到jquery,在“key”和“val”字段中放置所需的值。
$.post(
'url/to/your/handler.ashx',
{key: "PesterchumHandle", val: "carcinoGenetecist"}
);
答案 1 :(得分:1)
我浪费了一整天来解决这个问题,而这只是一个快速解决方案。在PageMethod调用期间,会话ID未与请求URL一起传递,因此新的session_start事件将被触发。我们只需要在调用pagemethod之前设置确切的请求路径,这样就不会触发新的会话启动事件。
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);
答案 2 :(得分:0)
您需要通过jquery向服务器发送ajax帖子。