我想将 asp 会话传递给 javascript 变量
i want to pass an asp session to javascript variable
好的,这是我的 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>
这是我的隐藏字段
<asp:HiddenField ID="HiddenField1" runat="server" />
这是错误
homePage.aspx:28 Uncaught TypeError: Cannot read properties of null (reading 'value')
您可以使用处理程序(.ashx 文件)返回会话值,然后在前端调用 ajax 来获取该值,或者在后端使用具有 [WebMethod] 属性的方法和ajax 在前端调用以获取会话值。
好的,所以您可能已经花了一些时间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");
您确实知道响应重定向的作用,对吧?它炸毁了当前页面、当前 class 和当前控件。然后你说请忘记这个页面,现在重定向到一个全新的页面。 (主页)。
那么,你怎么能注入一个脚本,然后决定转储整个当前页面而不是将它发送给客户端,然后重定向到一个完全不同的页面????
这意味着您需要put/place/have设置隐藏控件的代码,并将注册脚本移动到主页代码。因此,在主页上(是 PostBack = false),您可以设置隐藏字段,然后执行您的注册脚本。
但是,对于您当前的设置,通过执行重定向到一个全新的页面、您的注册脚本,实际上什至您对隐藏字段的设置——如果在设置隐藏字段之后,两者都毫无意义,并将脚本扔到 运行?
然后你说忘记所有这些,然后转移到一个全新的不同页面。
所以,移动你设置隐藏字段的代码,并将脚本注册到主页的加载(页面加载事件)。
好的,这是我的 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>
这是我的隐藏字段
<asp:HiddenField ID="HiddenField1" runat="server" />
这是错误
homePage.aspx:28 Uncaught TypeError: Cannot read properties of null (reading 'value')
您可以使用处理程序(.ashx 文件)返回会话值,然后在前端调用 ajax 来获取该值,或者在后端使用具有 [WebMethod] 属性的方法和ajax 在前端调用以获取会话值。
好的,所以您可能已经花了一些时间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");
您确实知道响应重定向的作用,对吧?它炸毁了当前页面、当前 class 和当前控件。然后你说请忘记这个页面,现在重定向到一个全新的页面。 (主页)。
那么,你怎么能注入一个脚本,然后决定转储整个当前页面而不是将它发送给客户端,然后重定向到一个完全不同的页面????
这意味着您需要put/place/have设置隐藏控件的代码,并将注册脚本移动到主页代码。因此,在主页上(是 PostBack = false),您可以设置隐藏字段,然后执行您的注册脚本。
但是,对于您当前的设置,通过执行重定向到一个全新的页面、您的注册脚本,实际上什至您对隐藏字段的设置——如果在设置隐藏字段之后,两者都毫无意义,并将脚本扔到 运行?
然后你说忘记所有这些,然后转移到一个全新的不同页面。
所以,移动你设置隐藏字段的代码,并将脚本注册到主页的加载(页面加载事件)。