如何每隔一段时间刷新页面的一部分
本文关键字:一部分 刷新 何每隔 一段时间 | 更新日期: 2023-09-27 18:30:00
我有一个页面,上面有一个面板,每5分钟自动刷新一次,如果用户的收件箱中有消息,就会显示给他。对此,最好的解决方案是什么?
我应该使用AJAX、jQuery还是JavaScript?我的首选解决方案是服务器端解决方案。
由于您使用的是ASP.Net,您还可以通过使用以下各项的组合来实现此行为:
- ScriptManager或ScriptManagerProxy(如果您有嵌套页面):管理ajax调用
- UpdatePanel:确定要更新的内容。嵌套在
<ContentTemplate>
中的控件受部分更新 - 触发器:控制何时更新内容
出于您的目的,Timer
控件可以用作触发器,以确保每5秒触发一次部分回发:
<asp:ScriptManager ID="scriptManagerMain" runat="server"/>
<asp:Timer ID="timer" Interval="5000" runat="server"/>
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Panel ID="panelToBeUpdated" runat="server">
<asp:Label ID="lblContent" runat="server" ></asp:Label>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="timer" />
</Triggers>
</asp:UpdatePanel>
我会使用Jquery向服务器发送AJax请求,以获取更新的内容。收到内容后,我将再次使用JQuery来更新标记。
您可以使用Javascript 中的setInterval将其设置为每5分钟触发一次
没有代码很难给出具体的例子。但是,您基本上需要使用定时器触发的ajax请求来加载新内容。
setInterval(function(){
$.ajax({
url: "someUrlThatServesUpdatedContent.aspx",
cache: false
}).done(function( html ) {
$("#results").html(html);
});
}, 300000);
以上只是一个简单的例子,可以为您指明正确的方向。
编辑:下面是一个如何在没有JQuery的情况下进行ajax调用的示例https://stackoverflow.com/a/2792721/1059001
使用AJAX使用前面答案中描述的方法可以做到这一点,但如果您希望有一个服务器端解决方案,我建议将页面的这一部分加载到iframe中,并使用元刷新:
<meta http-equiv="refresh" content="300">
然而,这种方法会使任何事件或用户操作都很难返回主页。