如何访问会话变量并在 javascript 中设置它们?

IT技术 javascript .net session
2021-01-20 14:55:54

在代码隐藏中,我设置Session了一些数据。

Session["usedData"] = "sample data";

问题是如何在 javascript 中获取 Session 值(在我的示例中;“示例数据”)并设置Session["usedData"]一个新值?

6个回答

使用 Javascript 访问和分配会话变量:

使用 Javascript 分配 ASP.NET 会话变量:

 <script type="text/javascript">
function SetUserName()
{
    var userName = "Shekhar Shete";
    '<%Session["UserName"] = "' + userName + '"; %>';
     alert('<%=Session["UserName"] %>');
}
</script>

使用 Javascript 访问 ASP.NET 会话变量:

<script type="text/javascript">
    function GetUserName()
    {

        var username = '<%= Session["UserName"] %>';
        alert(username );
    }
</script>
我试过你准确编码,当我在我的代码中访问它时得到的输出是 + userName +
2021-03-20 14:55:54
@HeemanshuBhalla 实际上,答案是获得赞成票,因为访问部分就像一个魅力。还没有检查分配部分。
2021-03-29 14:55:54
“访问”部分工作。但需要注意的是:它只会在页面创建时分配一次。服务器在呈现 JavaScript 时分配该值。您可以使用 pagelaad() 在部分 postpack 上重新执行 JavaScript,但如果您的回发更改,则不会将新 sessionVariable 分配给 JavaScript。它只会重用旧的。
2021-04-07 14:55:54
答案不起作用,但它仍然获得了赞成票。我认为答案需要审查
2021-04-08 14:55:54
这个答案是行不通的。调用 SetUserName 方法不会调用服务器来访问 Session 对象
2021-04-11 14:55:54

您不能Session直接在 JavaScript 中访问

您可以创建一个隐藏字段并将其传递到您的页面,然后使用 JavaScript 通过以下方式检索对象 document.getElementById

这种方法存在风险,因为用户可以使用浏览器开发人员工具轻松更改隐藏字段的值。
2021-03-13 14:55:54
不是真的,你还记得考试吗?JS 中的 sessionStorage ;)。
2021-03-19 14:55:54
哈哈 - 我收到了 localStorage 的问题 - 以防万一用户返回页面!;)
2021-03-22 14:55:54
@AhmadM - 这就是您还在服务器上进行验证的原因。这样做将防止间接对象引用攻击。
2021-03-31 14:55:54

Javascript 不能直接设置会话值。为了从 javascript 设置会话值,我按如下方式执行 ajax 调用。

在线查询

在 ASPx 文件或 html,

 <script type="text/javascript">
 $(function(){
   //Getting values from session and saving in javascript variable.
   // But this will be executed only at document.ready.
   var firstName = '<%= Session["FirstName"] ?? "" %>';
   var lastName = '<%= Session["LastName"] ?? "" %>';

   $("#FirstName").val(firstName);
   $("#LastName").val(lastName);

   $('Button').click(function(){
     //Posting values to save in session
     $.post(document.URL+'?mode=ajax', 
     {'FirstName':$("#FirstName").val(),
     'LastName':$("#LastName").val()
     } );
   });

 });

在服务器端,

protected void Page_Load(object sender, EventArgs e)
 {
      if(Request.QueryString["mode"] != null && Request.QueryString["mode"] == "ajax")
      {
        //Saving the variables in session. Variables are posted by ajax.
        Session["FirstName"] = Request.Form["FirstName"] ?? "";
        Session["LastName"] = Request.Form["LastName"] ?? "";
      }
 }

用于获取会话值,如 Shekhar 和 Rajeev 所说

var firstName = '<%= Session["FirstName"] ?? "" %>';

希望这可以帮助。

试试这个

var sessionValue = '<%=Session["usedData"]%>'
@AshBurlaczenko 您能否为此发布一个示例。会有很大帮助
2021-03-15 14:55:54
谢谢,效果很好:) 但我还想设置会话值,这可能吗?
2021-03-27 14:55:54
@MehmetInce,要设置 Session 值,您可以通过 post 将值发送到服务器或获取并让服务器处理请求。没有什么可以阻止您通过 ajax 执行此请求。
2021-04-03 14:55:54
但是,您将如何使用 Javascript 为会话变量赋值?
2021-04-11 14:55:54

假设你的意思是“客户端 JavaScript”——那么你不能,至少不能直接。

会话数据存储在服务器上,因此客户端代码在不与服务器通信的情况下无法看到它。

要访问它,您必须发出 HTTP 请求并让服务器端程序修改/读取并返回数据。

如果我不能直接访问,我的机会是使用 http 请求 :(
2021-04-07 14:55:54