3

有没有办法使用javascript分配会话值

我可以从会话中检索值,但分配不起作用

var TempSession = '<%= Convert.ToInt32(Session["Status"]) %>';
if(TempSession ==6)
{
   alert(TempSession );
   TempSession =1;
}
4

4 回答 4

5

Try using ajax call for setting the session value:-

JS:-

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"> </script>
<script type="text/javascript">
    var TempSession = '<%= Convert.ToInt32(Session["Status"]) %>';
    if (TempSession == 6) {
        alert(TempSession);
        $.ajax({
            type: 'POST',
            url: 'WebForm1.aspx/SetValue',
            data: '{ val:1 }',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (msg) {
                alert("New Session value is " + msg.d);
            }
        });
    }

</script>

In your code behind file:-

[WebMethod]
public static string SetValue(string val)
{
    HttpContext.Current.Session["Status"] = val;
    return HttpContext.Current.Session["Status"].ToString();
}
于 2013-07-21T09:17:10.080 回答
0

您可以通过 XmlHttpRequest 将数据发送到服务器会话。接收此数据的页面或处理程序可以将其放入服务器会话数据集合中。

于 2013-07-20T20:10:32.720 回答
0

如果您在谈论服务器端会话,那么它实际上取决于服务器端。

它应该为您分配一个会话 id,通常通过 cookie....
这意味着您可以例如向服务器中的指定 url 发出 ajax 请求,指定所需的会话 id。然后,该 ajax 请求将通过 cookie 分配会话。

另一个想法是在客户端使用具有特定会话 ID 的 JavaScript 主动创建一个 cookie(同样,如果服务器支持),即

$.cookie("SESSION", "session-id"); // Using jQuery

虽然我以前从未尝试过。
请注意,cookie 的名称取决于您的服务器技术(TomcatJSESSIONID默认为[link],ASP.NET 为ASP.NET_SessionId[link],在“Note”下)。

于 2013-07-20T19:10:23.440 回答
0

实际上,在 MSDN 上有一个涵盖您案例的教程。在向客户端脚本公开 Web 服务中对此进行了描述,请参阅“在 ASP.NET 网页中调用静态方法”部分。

您所要做的就是在您的控件上设置EnablePageMethods属性,然后使用在后面的代码中声明的对象调用静态方法(它应该用属性装饰)。TrueScriptManagerPageMethodsWebMethod

于 2013-07-21T08:33:29.440 回答