检测第一页加载jquery会话

时间:2013-10-29 10:17:45

标签: asp.net jquery session

用户登录后,我会根据页面加载方法检查向用户显示警告。现在当用户导航到其他aspx页面并再次点击home时,我不希望他再次看到警报。我想用jquery和session变量实现这一点。在某种程度上,我想使用会话变量检查jquery的第一页加载。

3 个答案:

答案 0 :(得分:1)

我可以使用Session和RegisterStartupScript

执行此操作

用户登录代码

public void doLogin(string userName, string pwd)
{
 // validate user 
 // check to see whether need to show alert
  Session["ShowAlert"]=true;
  Response.Redirect("Home.aspx");
}
Home.aspx中的

选项1

protected void Page_Load(object sender, EventArgs e)
{

if(Session["ShowAlert"]!=null)
{
    String scriptName = "PopupScript";


    if (!IsClientScriptBlockRegistered(csname1))
    {
      StringBuilder cstext = new StringBuilder();
      cstext.Append("<script type=\"text/javascript\"> function showUserAlert() {");
      cstext.Append("alert('message');} ");
      cstext.Append("</script>");
      RegisterStartupScript(cstext, cstext.ToString());

      Session.Remove("ShowAlert");
    }

}
}

选项2:

只需在页面中定义javascript变量var,然后在$(function(){...})

中使用它
protected void Page_Load(object sender, EventArgs e)
{

if(Session["ShowAlert"]!=null)
{
    String scriptName = "PopupScript";


    if (!IsClientScriptBlockRegistered(csname1))
    {
      StringBuilder cstext = new StringBuilder();
      cstext.Append("<script type=\"text/javascript\">");
      cstext.Append("var showAlert=true;");
      cstext.Append("</script>");
      RegisterClientScriptBlock(cstext, cstext.ToString());

      Session.Remove("ShowAlert");
    }

}
}

JS

$(document).ready(function(){
if(showAlert)
{
 alert('ShowMessage');
}
});

答案 1 :(得分:0)

几个星期前我做了这个确切的功能,但使用了mySQL数据库而不是使用会话。如果您希望仅向用户显示警报(或尽可能接近永久)或仅每周一次等,则应使用cookie而不是会话。

否则,您可以使用jQuery检测页面何时加载:

$().ready(function(){
    if(!$.session.get("viewed_page")){
        alert("some message"); 
        $.session.set("viewed_page", true);
    }
});

答案 2 :(得分:0)

这里不需要会议。

您可以使用会话cookie本身。

$(function (){
  if (document.cookie.indexOf("yourToken")>-1)
  {}
  else
  {
  // show the window , and set a cookie
  }
});