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

Meh*_*nce 75 .net javascript session

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

Session["usedData"] = "sample data";
Run Code Online (Sandbox Code Playgroud)

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

SHE*_*ETE 60

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

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

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

使用Javascript访问ASP.NET Session变量:

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

        var username = '<%= Session["UserName"] %>';
        alert(username );
    }
</script>
Run Code Online (Sandbox Code Playgroud)

  • 这个答案是行不通的.调用SetUserName方法不会调用服务器来访问Session对象 (18认同)
  • 我试过你准确的代码和我在我的代码中访问它时得到的输出输出是`+ userName +` (5认同)
  • 答案是不行的仍然是得到了投票.我认为答案需要进行审核 (3认同)
  • "访问"部分工作.但是BIG警告:它只会在页面创建时分配一次.服务器在呈现JavaScript时分配值.您可以使用pagelaad()在部分postpack上重新执行JavaScript,但如果您的回发更改,则不会将新的sessionVariable分配给JavaScript.它只会重用旧的. (3认同)

Dar*_*ren 24

您无法Session直接在JavaScript中访问.

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

  • @AhmadM - 这也是你在服务器上验证的原因.这样做可以防止间接对象引用攻击. (4认同)
  • 不是这样,你还记得考试吗?JS中的sessionStorage;). (2认同)

Gan*_*ade 12

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

 });
Run Code Online (Sandbox Code Playgroud)

在服务器端,

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"] ?? "";
      }
 }
Run Code Online (Sandbox Code Playgroud)

正如Shekhar和Rajeev所说,获得会话价值

var firstName = '<%= Session["FirstName"] ?? "" %>';
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Raj*_*mar 11

试试这个

var sessionValue = '<%=Session["usedData"]%>'
Run Code Online (Sandbox Code Playgroud)

  • 我想你不能 (4认同)
  • 这是一个XSS漏洞。 (2认同)

Que*_*tin 7

假设你的意思是"客户端JavaScript" - 那么你不能,至少不能直接.

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

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


bte*_*fik 5

为代码隐藏文件中的隐藏字段赋值。像普通 HTML 控件一样在 javascript 中访问此值。