【发布时间】:2013-10-29 10:17:44
【问题描述】:
一旦用户登录,我会根据页面加载方法的检查向用户显示警报。现在,当用户导航到其他 aspx 页面并再次单击主页时,我不希望他再次看到警报。我想用 jquery 和 session 变量来实现这一点。在某种程度上,我想使用会话变量检查 jquery 的首页加载情况。
【问题讨论】:
-
将
jQuery.ajax或jQuery.getJSON调用挂接到返回会话变量的服务器端页面。
一旦用户登录,我会根据页面加载方法的检查向用户显示警报。现在,当用户导航到其他 aspx 页面并再次单击主页时,我不希望他再次看到警报。我想用 jquery 和 session 变量来实现这一点。在某种程度上,我想使用会话变量检查 jquery 的首页加载情况。
【问题讨论】:
jQuery.ajax 或jQuery.getJSON 调用挂接到返回会话变量的服务器端页面。
我可以使用 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');
}
});
【讨论】:
几周前我做了这个确切的功能,但使用的是 mySQL 数据库而不是会话。如果您只想向用户显示一次提醒(或尽可能接近永久)或每周一次等,那么您应该使用 cookie 而不是会话。
否则,您可以简单地使用 jQuery 检测页面何时加载:
$().ready(function(){
if(!$.session.get("viewed_page")){
alert("some message");
$.session.set("viewed_page", true);
}
});
【讨论】:
sessionStorage HTML5 功能。我认为IE7 不会支持它
这里不需要会话。
您可以使用会话 cookie 本身。
$(function (){
if (document.cookie.indexOf("yourToken")>-1)
{}
else
{
// show the window , and set a cookie
}
});
【讨论】: