使用javascript分配会话值

时间:2013-07-18 10:26:56

标签: javascript asp.net

有没有办法使用javascript

分配会话值

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

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

5 个答案:

答案 0 :(得分:5)

尝试使用ajax调用来设置会话值: -

<强> 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>

在您的代码隐藏文件中: -

[WebMethod]
public static string SetValue(string val)
{
    HttpContext.Current.Session["Status"] = val;
    return HttpContext.Current.Session["Status"].ToString();
}

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

实际上MSDN上的这个教程涵盖了你的案例。它在Exposing Web Services to Client Script中描述,请参阅“在ASP.NET网页中调用静态方法”部分。

您所要做的就是在EnablePageMethods控件上将True属性设置为ScriptManager,然后使用PageMethods对象调用静态方法(它应该用{修饰} {1}}属性)在代码后面声明。

答案 4 :(得分:0)

javascript函数:

function InitializeRequest(path) {
            // call server side method
            PageMethods.SetDownloadPath(path);
}

功能背后的代码:

[System.Web.Services.WebMethod]
    public static string SetDownloadPath(string strpath)
    {
        Page objp = new Page();
        objp.Session["strDwnPath"] = strpath; 
        return strpath;
    }

必须启用页面方法设置为true:

<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>