【问题标题】:detect first page load jquery session检测第一页加载jQuery会话
【发布时间】:2013-10-29 10:17:44
【问题描述】:

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

【问题讨论】:

  • jQuery.ajaxjQuery.getJSON 调用挂接到返回会话变量的服务器端页面。

标签: asp.net jquery session


【解决方案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');
}
});

【讨论】:

    【解决方案2】:

    几周前我做了这个确切的功能,但使用的是 mySQL 数据库而不是会话。如果您只想向用户显示一次提醒(或尽可能接近永久)或每周一次等,那么您应该使用 cookie 而不是会话。

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

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

    【讨论】:

    • 对不起,是的,我应该包括你需要会话插件! github.com/AlexChittock/JQuery-Session-Plugin
    • 感谢 JackalopeZero,但不允许添加插件...有没有 jquery 内置的方法
    • 当然,请参阅设置和检查 cookie:w3schools.com/js/js_cookies.asp
    • 我认为它使用了sessionStorage HTML5 功能。我认为IE7 不会支持它
    • 是的 Murali,那是正确的......我认为没有使用 HTML 5 的 jquery 有一种简单的俗气的方法
    【解决方案3】:

    这里不需要会话。

    您可以使用会话 cookie 本身。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      相关资源
      最近更新 更多