如何在一定时间间隔内刷新页面的部分内容

3

我有一个页面,我想在它上面放置一个面板,每5分钟自动刷新,并且如果用户收到了信息,则向他显示。这个问题应该如何解决呢?

我应该使用AJAX、jQuery还是JavaScript?我的首选方案是服务器端解决方案。


2
为什么这个被踩了?这个问题并不差。+1 来平衡一下。 - undefined
我养成了这种习惯,对那些毫无理由地给我投票负面评价的用户。 - undefined
1
@JonathanLonowski - 同意。但我见过更糟糕的情况,对于下投票有一个理由。因此,Stack Overflow 真的应该追踪那些没有评论但进行下投票的人,并以某种方式指出他们。这样就能阻止他们了。 :) - undefined
我同意@RPM1984的观点。我在StackExchange上发布了一个主题,但用户投票关闭了该主题。我说SO应该强制用户附带投票理由。 - undefined
4个回答

1
很难在没有代码的情况下给出具体的例子。但基本上,您需要通过定时器触发一个ajax请求来加载新内容。
setInterval(function(){
    $.ajax({
      url: "someUrlThatServesUpdatedContent.aspx",
      cache: false
    }).done(function( html ) {
      $("#results").html(html);
    });
}, 300000);

以上只是一个简单的示例,指引您朝正确的方向前进。

编辑:这里有一个不使用JQuery进行ajax调用的示例https://stackoverflow.com/a/2792721/1059001


1

使用前面答案中描述的 AJAX 方法可以实现这一点,但如果您希望有一个服务器端解决方案,我建议在 iframe 中加载页面的那部分,并使用 meta refresh:

<meta http-equiv="refresh" content="300">

然而,这种方法会使得将任何事件或用户操作传达回主页面变得困难。


这不是一个“服务器端解决方案”,因为它依赖于浏览器重新加载 iframe。在网络上,实际上不可能完全基于服务器端的解决方案,因为服务器无法直接触发浏览器执行任何操作。 - undefined
我可以使用用户控件并在其中使用您的“元标签”吗?然后将其添加到我的页面上吗? - undefined

1

由于您正在使用ASP.NET,您也可以通过以下组合实现此行为:

  1. ScriptManagerScriptManagerProxy(如果您有嵌套页面):管理ajax调用
  2. UpdatePanel:确定需要更新的内容。在<ContentTemplate>内部的控件将受到部分更新的影响
  3. Triggers:控制何时更新内容。

为了您的目的,可以使用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>

1
我会使用JQuery发送AJax请求到服务器来获取更新的内容。收到内容后,我会再次使用JQuery来更新标记。你可以使用JavaScript中的setInterval将其设置为每5分钟触发一次。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接