【问题标题】:How to get session value using javascript如何使用 javascript 获取会话值
【发布时间】:2013-07-16 00:51:57
【问题描述】:

我有一个类来处理会话变量。附上一个示例:

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;
    }

【问题讨论】:

  • 你试过了吗:var session = '&lt;%= HttpContext.Current.Session["departFlightID"]; %&gt;';
  • @karaxuna 不,但让我检查一下......
  • 是的,它做了同样的返回空。
  • 你是在aspx文件还是js文件中写上面的脚本代码?如果你把它写在一个 js 文件中,它不会工作。
  • 可能是因为静态上下文。尝试这样分配:HttpContext.Current.Session["departFlightID"] = flightID;

标签: c# javascript asp.net visual-studio-2010 session


【解决方案1】:

这是与here 相同的问题。

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

【讨论】:

    【解决方案2】:

    WebMethods 默认不支持 Session 变量。您的 WebMethod 声明应如下所示:

    [WebMethod(EnableSession = true)]
    

    【讨论】:

    • 不幸的是它没有。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 2010-10-19
      • 2019-07-23
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多