【问题标题】:how to refresh a portion of a page in intervals如何间隔刷新页面的一部分
【发布时间】:2012-04-16 18:22:56
【问题描述】:

我有一个页面,在它上面我想要一个面板,它每 5 分钟自动刷新一次,如果用户在他的收件箱中有一条消息显示给他。最好的解决方案是什么?

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

【问题讨论】:

  • 为什么这被否决了?根本不是一个坏问题。 +1 将其拉平。
  • 对于那些无缘无故投票反对我的用户,我养成了这个习惯
  • @JonathanLonowski - 同意。但我见过更糟糕的人有理由拒绝投票。所以真的应该追踪那些不加评论而投反对票的人,并应该以某种方式指出他们。那会阻止他们。 :)
  • 我同意@RPM1984 我为此在StackExchange 上发布了一个主题,但用户投票关闭该主题。我说SO 强迫用户说出拒绝投票的理由。

标签: c# javascript jquery asp.net ajax


【解决方案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>

【讨论】:

    【解决方案2】:

    我会使用 Jquery 向服务器发送 AJax 请求以获取更新的内容。收到内容后,我会再次使用 JQuery 来更新标记。

    您可以使用 Javascript 中的 setInterval 将其设置为每 5 分钟触发一次

    【讨论】:

      【解决方案3】:

      没有代码很难给出一个具体的例子。但是您基本上需要使用由计时器触发的 ajax 请求来加载新内容。

      setInterval(function(){
          $.ajax({
            url: "someUrlThatServesUpdatedContent.aspx",
            cache: false
          }).done(function( html ) {
            $("#results").html(html);
          });
      }, 300000);
      

      以上只是一个简单的示例,可以为您指明正确的方向。

      编辑:这是一个如何在没有 JQuery 的情况下进行 ajax 调用的示例 https://stackoverflow.com/a/2792721/1059001

      【讨论】:

        【解决方案4】:

        可以使用先前答案中描述的方法使用 AJAX 来做到这一点,但如果您希望拥有服务器端解决方案,我建议您在 iframe 中加载页面的该部分,并使用元刷新:

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

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

        【讨论】:

        • 这不是“服务器端解决方案”,因为它依赖于浏览器来重新加载 iframe。在网络上不可能有一个完全服务器端的解决方案,因为服务器不能直接触发浏览器做任何事情。
        • 我可以使用用户控件并在其中使用您的Meta tag 吗?并将其添加到我的页面?
        猜你喜欢
        • 2013-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-23
        相关资源
        最近更新 更多