ajax 页面刷新问题

没有鱼丸是我 2014-12-03 07:28:56
页面的构成:
页面分成上下两部分,
上面的部分显示人员的头像和用户名
下面的部分使用ajax,用来显示其他信息

问题发生的场景:
1 用户A登录,页面的上部分显示出来了用户A的头像和用户名
2 保持用户A登录不变,在浏览器再开一个新的页面,使用用户B登录
3 这个时候回到用户A登录的那个页面,操作下半部分,上半部分不会更新,导致永远显示用户A的信息
其实这个时候都应该是B的信息了

问题:
如果能够在这个场景下,将上半部分的信息进行更新呢?
或者在操作A的界面时,发现登录的名字已经变了,跳转到首页也行啊

注:
整个网站使用的是asp.net

多谢



...全文
447 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwq222121 2014-12-09
  • 打赏
  • 举报
回复
引用 20 楼 lwq222121 的回复:
首先,登录时存cookie,然后前台写个定时的ajax请求,定时去读cookie,把读到的结果更新到你的上半部分不就成了?settimeout
setInterval
lwq222121 2014-12-09
  • 打赏
  • 举报
回复
首先,登录时存cookie,然后前台写个定时的ajax请求,定时去读cookie,把读到的结果更新到你的上半部分不就成了?settimeout
一剑天琊雪 2014-12-09
  • 打赏
  • 举报
回复
这个,肯定是需要 一次刷新操作的。 要是用SEssion的话,倒是有可能会达到你那个效果,但是 其它情况下 会窜值。QQ空间貌似就是这样(同时开俩QQ ,一起打开空间 就窜了)。 用cookie的话,就没你那个效果了,需要 给一个 计时器,隔一段时间,刷新一下页面状态。
jiaxin_2648872250 2014-12-08
  • 打赏
  • 举报
回复
ajax分步式保存注册用户信息功能 //ajax设置内容 <div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> <ContentTemplate> <asp:Wizard ID="Wizard1" runat="server" ActiveStepIndex="0" BackColor="#EFF3FB" BorderColor="#B5C7DE" BorderWidth="1px" Font-Size="Medium" Width="477px"> <StepStyle Font-Size="0.8em" ForeColor="#333333" /> <SideBarStyle BackColor="#507CD1" Font-Size="0.9em" VerticalAlign="Top" /> <NavigationButtonStyle BackColor="White" BorderColor="#507CD1" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284E98" /> <WizardSteps> <asp:WizardStep ID="WizardStep1" runat="server" StepType="Start" Title="基本信息"> <asp:Label ID="Label1" runat="server" Text="用户名(只能由数字、字母、汉字或下划线组成):"></asp:Label> <asp:TextBox ID="TextBox1" runat="server" Width="65px"></asp:TextBox> <br /> <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ErrorMessage="只能为数字、字母、汉字或下划线组成" ControlToValidate="TextBox1" ValidationExpression="[\w\u4e00-\u9fa5]{3,8}" Display="Dynamic" style="font-size: small"></asp:RegularExpressionValidator> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox1" Display="None" ErrorMessage="请输入用户名。" EnableClientScript="False"></asp:RequiredFieldValidator><br /> <asp:Label ID="Label2" runat="server" Text="请输入您的电子邮件:"></asp:Label> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <br /> <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox2" Display="None" ErrorMessage="您所输入的电子邮件格式不正确。" ValidationExpression="^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$" EnableClientScript="False"></asp:RegularExpressionValidator> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox2" Display="None" ErrorMessage="您必须输入电子邮件。" EnableClientScript="False"></asp:RequiredFieldValidator><br /> <asp:ValidationSummary ID="Step1ValidationSummary" runat="server" EnableClientScript="False" /> </asp:WizardStep> <asp:WizardStep ID="WizardStep2" runat="server" Title="附录信息" StepType="Finish"> <div style="text-align: center"> <asp:Calendar ID="Calendar1" runat="server" OnSelectionChanged="Calendar1_SelectionChanged"> </asp:Calendar> </div> <br /> <asp:Label ID="Label3" runat="server" Text="请选择日期:"></asp:Label> <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> <br /> <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="TextBox3" ErrorMessage="请选择未来的日期。" Operator="GreaterThanEqual" Type="Date" Display="None" EnableClientScript="False"></asp:CompareValidator> <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TextBox3" Display="None" ErrorMessage="您务必选择日期。" EnableClientScript="False"></asp:RequiredFieldValidator><br /> 请选择婚姻状态 <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem>保密</asp:ListItem> <asp:ListItem>已婚</asp:ListItem> <asp:ListItem>未婚</asp:ListItem> </asp:DropDownList> <br /> <asp:CustomValidator ID="CustomValidator1" Display="None" runat="server" ControlToValidate="DropDownList1" ErrorMessage="您的婚姻状态不能保密哦^_^" OnServerValidate="CustomValidator1_ServerValidate" EnableClientScript="False"></asp:CustomValidator><br /> <asp:ValidationSummary ID="ValidationSummary2" runat="server" EnableClientScript="False" /> </asp:WizardStep> <asp:WizardStep ID="WizardStep3" runat="server" StepType="Complete" Title="恭喜注册成功!"> 已经将您的注册信息发送到您的电子邮件邮件中,以备后期查找!。</asp:WizardStep> </WizardSteps> <SideBarButtonStyle BackColor="#507CD1" Font-Names="Verdana" ForeColor="White" /> <HeaderStyle BackColor="#284E98" BorderColor="#EFF3FB" BorderStyle="Solid" BorderWidth="2px" Font-Bold="True" Font-Size="0.9em" ForeColor="White" HorizontalAlign="Center" /> <HeaderTemplate> 快速注册您的用户名  </HeaderTemplate> </asp:Wizard> </ContentTemplate> </asp:UpdatePanel> </div> //加载的日期不能小于当前日期 protected void Page_Load(object sender, EventArgs e) { CompareValidator1.ValueToCompare = DateTime.Today.ToShortDateString(); } //对用户选中的婚姻状况进行判断 protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) { // 您可以在此处编写业务逻辑以便判断用户所选择的婚姻状态是否可行, // 本实例刻意不允婚姻状态不能保密。 args.IsValid = false; if (DropDownList1.SelectedIndex > 0) { args.IsValid = true; } }
  • 打赏
  • 举报
回复
用Session来保存用户信息的话,可以实现同步,B登录后,A页面刷新一下,信息就同步为B用户信息了
「已注销」 2014-12-05
  • 打赏
  • 举报
回复
总感觉你这样做有些怪怪的,你说的登录A之后,在浏览器再开一个新的页面,是重新打开一个新标签页么? 如果是新开标签页,在登录界面就应该判断下当前有没有登录者吧?如果本地登录了一个用户就不允许再登录,从根本上杜绝。 如果是重新再打开一次浏览器就更不会出现你说的情况。 如果一定要按照你说的这样做的话,要么上下部分都刷新,要么不用ajax。 当然也可以是大家说的其它方法。
没有鱼丸是我 2014-12-05
  • 打赏
  • 举报
回复
引用 9 楼 zeratul1990 的回复:
2 保持用户A登录不变,在浏览器再开一个新的页面,使用用户B登录 首先要注销A才能登陆吧。 一般来讲,就算是百度之类的网站也没考虑登陆注销的各个窗口同步,你一定要做的话就setInterval每秒查一下cookie状态咯。 如果在操作下边内容时更新上边也行的话,那就在下面的操作事件中加上对上半屏幕的判断?有的网站可能是把上半屏的内容作为参数了,所以碰到你这种情况会提示登录异常之类的错误,刷新之后才能操作,你也可以参考这种想想?
谢谢
没有鱼丸是我 2014-12-05
  • 打赏
  • 举报
回复
引用 9 楼 zeratul1990 的回复:
2 保持用户A登录不变,在浏览器再开一个新的页面,使用用户B登录 首先要注销A才能登陆吧。 一般来讲,就算是百度之类的网站也没考虑登陆注销的各个窗口同步,你一定要做的话就setInterval每秒查一下cookie状态咯。 如果在操作下边内容时更新上边也行的话,那就在下面的操作事件中加上对上半屏幕的判断?有的网站可能是把上半屏的内容作为参数了,所以碰到你这种情况会提示登录异常之类的错误,刷新之后才能操作,你也可以参考这种想想?
谢谢
没有鱼丸是我 2014-12-05
  • 打赏
  • 举报
回复
引用 9 楼 zeratul1990 的回复:
2 保持用户A登录不变,在浏览器再开一个新的页面,使用用户B登录 首先要注销A才能登陆吧。 一般来讲,就算是百度之类的网站也没考虑登陆注销的各个窗口同步,你一定要做的话就setInterval每秒查一下cookie状态咯。 如果在操作下边内容时更新上边也行的话,那就在下面的操作事件中加上对上半屏幕的判断?有的网站可能是把上半屏的内容作为参数了,所以碰到你这种情况会提示登录异常之类的错误,刷新之后才能操作,你也可以参考这种想想?
谢谢
天空丶蒋 2014-12-05
  • 打赏
  • 举报
回复
你可以看一下qq空间的处理。。。
huaneramn 2014-12-04
  • 打赏
  • 举报
回复
这谁设计的。。。。。。。。。。。。。。
没有鱼丸是我 2014-12-04
  • 打赏
  • 举报
回复
引用 4 楼 ayanamireizero 的回复:
要不就你在第一个页面操作时,同时ajax刷新一下上半部分信息
恩 是这个意思,就是这么做,但是如何才能实现呢
ayanamireizero 2014-12-04
  • 打赏
  • 举报
回复
要不就你在第一个页面操作时,同时ajax刷新一下上半部分信息
ayanamireizero 2014-12-04
  • 打赏
  • 举报
回复
在不刷新第一个打开页面的情况下,肯定不会更新第一个页面上半部分信息.... 就和以前给一个公司做站,该公司提交了一些修改方案,我改好后告诉他们好了,他们总是说不行,还是一样,我都得和他们说,请按F5刷新一下一样......
Tucker_blog 2014-12-04
  • 打赏
  • 举报
回复
保持用户A登录不变,在浏览器再开一个新的页面,使用用户B登录,首先要注销A才能登陆吧。 +1
Tucker_blog 2014-12-04
  • 打赏
  • 举报
回复
保持用户A登录不变,在浏览器再开一个新的页面,使用用户B登录,首先要注销A才能登陆吧。 +1
拜一刀 2014-12-04
  • 打赏
  • 举报
回复
2 保持用户A登录不变,在浏览器再开一个新的页面,使用用户B登录 首先要注销A才能登陆吧。 一般来讲,就算是百度之类的网站也没考虑登陆注销的各个窗口同步,你一定要做的话就setInterval每秒查一下cookie状态咯。 如果在操作下边内容时更新上边也行的话,那就在下面的操作事件中加上对上半屏幕的判断?有的网站可能是把上半屏的内容作为参数了,所以碰到你这种情况会提示登录异常之类的错误,刷新之后才能操作,你也可以参考这种想想?
於黾 2014-12-04
  • 打赏
  • 举报
回复
引用 5 楼 rosebt 的回复:
[quote=引用 4 楼 ayanamireizero 的回复:] 要不就你在第一个页面操作时,同时ajax刷新一下上半部分信息
恩 是这个意思,就是这么做,但是如何才能实现呢 [/quote] 既然你会用ajax刷新下半部分,刷新上半部分不是一样吗
没有鱼丸是我 2014-12-04
  • 打赏
  • 举报
回复
怎么还是没有人啊
slwsss 2014-12-03
  • 打赏
  • 举报
回复
将登录用户名/id存cookie里定时去检测

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧