如何使用javascript获取会话值

How to get session value using javascript

本文关键字:会话 获取 javascript 何使用      更新时间:2023-09-26

我有一个类来处理会话变量。这是一个附加的样本:

namespace General
{
    public class Session
    {
        public Session()
        {
        }

        public static string UserID
        {
            get { return HttpContext.Current.Session["UserID"] as string ?? String.Empty; }
            set { HttpContext.Current.Session["UserID"] = value;  }
        }
        public static string departFlightID
        {
            get { return HttpContext.Current.Session["departFlightID"] as string ?? String.Empty; }
            set { HttpContext.Current.Session["departFlightID"] = value; }
        }
        public static string returnFlightID
        {
            get { return HttpContext.Current.Session["returnFlightID"] as string ?? String.Empty; }
            set { HttpContext.Current.Session["returnFlightID"] = value; }
        }
}
}

现在,在某个时刻,我将flightID存储在:中

General.Session.departFlightID = flightID;

在另一点上,我想使用Javascript检索这个值。我在这里看到了一些例子,但它们不起作用(没有错误,但它们会返回EMPTY)。

最近的尝试:

 var session = '<%= General.Session.departFlightID %>';
 var session = '<%= HttpContext.Current.Session["departFlightID"] %>';

如果我在页面加载上设置值,它确实有效,但我运行的是一个web方法,在该方法中我创建一个html,然后将该html发送回div中进行填充,从而在那里生成一个票证。我需要获取会话值,但它不会更新。

更清楚的是这里的Javascript代码:

<script type="text/javascript">

function addTicket(flightID, flightType) {
    PageMethods.addTicket(flightID, flightType, OnGetMessageSuccess);
}
function OnGetMessageSuccess(result, userContext, methodName) {
    var pageUrl = document.URL;
    if (pageUrl.indexOf("&ret_date=&") !== -1) {
        var session = '<%= HttpContext.Current.Session["departFlightID"] %>';
        alert(session);
        result = result + "<a onclick='"searchflight.abortAllAjax()'" data-index='"6'" class='"bookNow'" title='"Book Now!'" href='"#'">Book Now!</a>";
        result = result + "</div>    </div>  </div>";
        document.getElementById("detail").innerHTML = result;
    }
}

这是网络方法:

[System.Web.Services.WebMethod]
    public static string addTicket(string flightID, string flightType)
    {
        //GET FLIGHT DETAILS  FROM DATATABLE OR SESSION DATA TABLE
        string tmpHtml = string.Empty;
        tmphtml="sample";
        string flightID="123123213";
        General.Session.departFlightID=flightID;
    return tmphtml;
    }

这是与此处相同的问题。

我们通常在会话变量中有敏感数据,所以它们总是在服务器端。不过,如果你愿意,你可以尝试在.aspx标记中添加一个HiddenField,并在代码后面设置它。一旦设置了值,就可以使用$("#id")方式或Document.GetElementById()方法非常容易地访问该值。

如果您使用的是mvc,那么:

var ttype = ' @HttpContext.Current.Session["TestType"] ';

WebMethods默认情况下不支持会话变量。您的WebMethod声明应该如下所示:

[WebMethod(EnableSession = true)]