【问题标题】:i want to pass an asp session to javascript variable我想将一个asp会话传递给javascript变量
【发布时间】:2022-01-01 14:38:53
【问题描述】:

好的,这是我的登录页面的 ASP 代码,成功后我正在创建会话之一,即 Session["role"]="user",我想将该值传递给 HiddenField1,然后我我试图在 JavaScript 中获取这个值,但是当我 console.log HiddenField 值时,即使我已经尝试了几乎所有建议的解决方案,我总是得到 null ...如果有人可以解决这个问题,那么请给个方法

Asp 代码

 if (dr.HasRows)
                {
                    if(dr.Read())
                    {
                        //Response.Write("<script> alert( 'the user  : "+dr.GetValue(8).ToString()+" Successfully Logged in')</script>");


                        Session["username"]=dr.GetValue(8).ToString();
                        Session["fullname"] = dr.GetValue(0).ToString();


                        Session["role"] = "user"; 


                      HiddenField1.Value = Session["role"].ToString();
                    Response.Write("<script> alert("+HiddenField1.Value+")</script>");
                        Session["status"] = dr.GetValue(10).ToString();

                    }

                    ScriptManager.RegisterStartupScript(this, GetType(), "popup", "MyAlertFunOnSucc()", true);
                   Response.Redirect("homePage.aspx");


                }

主页头中的 JAVASCRIPT

<script type="text/javascript">
    var array_store;
   
        array_store = document.getElementById("HiddenField1").value;
        console.log(array_store);
   
</script>

这是我的 hiddenField


        <asp:HiddenField ID="HiddenField1" runat="server" />

这就是错误 homePage.aspx:28 Uncaught TypeError: Cannot read properties of null (reading 'value')

【问题讨论】:

  • 提示:尝试检查浏览器看到的警告行
  • 我已经做到了
  • 而且,这是一个正确的说法吗?我假设您在字符串值周围缺少引号

标签: javascript asp.net session-variables


【解决方案1】:

好的,所以您可能已经花一些时间让 CRYSTAL 清楚您在这里有一个母版页?

但是,你有这个代码:

  HiddenField1.Value = Session["role"].ToString();
                Response.Write("<script> alert("+HiddenField1.Value+")</script>");
                    Session["status"] = dr.GetValue(10).ToString();

                }

                ScriptManager.RegisterStartupScript(this, GetType(), "popup", "MyAlertFunOnSucc()", true);
               Response.Redirect("homePage.aspx");

您确实知道响应重定向的作用,对吧?它破坏了当前页面、当前类和当前控件。然后你说请忘记这个页面,现在重定向到一个全新的页面。 (主页)。

那么,你怎么能注入一个脚本,但然后决定转储整个当前页面而不是将其发送给客户端,然后重新定向到一个完全不同的页面????

这意味着您需要放置/放置/拥有设置隐藏控件的代码,并将注册脚本移动到主页代码。所以,在主页上(是 PostBack = false),你可以设置隐藏字段,然后执行你的注册脚本。

但是,使用您当前的设置,通过执行重定向到一个全新的页面、您的注册脚本,甚至您的隐藏字段设置 - 如果在设置隐藏字段之后,两者都毫无意义,然后折腾在脚本中运行?

然后您说忘记所有这些,现在将 TRANSFER 转移到一个全新的不同页面。

因此,移动设置隐藏字段的代码,并将脚本注册到主页的加载(页面加载事件)。

【讨论】:

    【解决方案2】:

    您可以使用处理程序(.ashx 文件)返回会话值,然后在前端使用 ajax 调用来获取该值,或者在后端使用具有 [WebMethod] 属性的方法并在前端使用 ajax 调用来获取该值获取会话值。

    【讨论】:

    • 我将值存储在一个变量中,然后传递到本地存储,但是当我第一次登录时本地存储没有创建,当我第二次登录时本地存储创建......这就是问题所在现在是凯文
    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多