【问题标题】:HTML automatically refresh page but check for connection priorHTML 自动刷新页面但先检查连接
【发布时间】:2015-06-11 20:33:11
【问题描述】:

我有一个基于 Python 的烧瓶 Web 应用程序,它在 html 页面上显示一些 SQL 信息。

此页面是半实时的,每 15 分钟刷新一次,只需一次简单的 html 刷新:

<META HTTP-EQUIV="refresh" CONTENT="9000">

只要连接正常,就可以正常工作,没有内部代码错误。

现在,一旦由于某种原因无法正确刷新页面,我不想手动刷新页面。 (连接,内部错误)。

是否有可能让网页每隔固定时间刷新一次,而不管上次刷新是否成功。

目前html页面不包含Javascript之类的,只有Flask内置模板引擎Jinja2生成的纯html。

是否可以先完全加载网页而不是检查是否成功然后刷新?

【问题讨论】:

  • jep;使用所谓的 Ajax 技术,自动加载/重新加载页面组件/数据。 (Jquery 是一个很好的框架:api.jquery.com/jquery.ajax

标签: javascript python html


【解决方案1】:

如果您获得了诸如jQuery 之类的javascript 库,则可以使用异步Ajax functions 来执行此操作。这是一个示例,说明如何在成功加载后每 15 分钟替换一次 &lt;body&gt; 内容:

function update_site() {
    $.ajax({
        url: "/my/page/url/",
        dataType: "html",
        cache: false,
        success: function(data) {
            // Replace body with loaded site. You can do more checks here to check
            // if the fetched content is all there.
            var body_html = /^.*<body>(.*)<\/body>.*$/g.exec(data)[1];
            $('body').html(body_html);
        }, 
        error: function(data) {
            // Couldn't load site. 
        }
    });
}
// Run every 15 minutes.
window.setInterval(function() {
  update_site();
}, 15*60*1000);

【讨论】:

  • 感谢这似乎有效。我可以看到我在服务器上收到了一个请求,但页面没有更新。我认为这可能是兑现问题?
  • 没有变化很遗憾应该t it be .find('')`?如果你有时间,你可以通过 teamviewer 查看它吗?
  • 不,是('body')。尝试使用alert(data)$('body').html('test'); 进行调试。
  • 谢谢!我的页面太大,无法在alert() 提示符中显示,所以我安装了 firebug 快速检查数据对象。并且随着数据对象中的数据更新,它确实正确加载了页面。但是浏览器没有t update it. replacing$('body').html('test');` 确实有效。
  • 那么它应该可以工作。也许你想要被更新的是在body标签之外?
【解决方案2】:

您可以实现一些 javascript 来在按下按钮时检查连接。您可以使用适用于所有主流浏览器的 navigator.onLine 属性。

在这里阅读更多: http://www.w3schools.com/jsref/prop_nav_online.asp

【讨论】:

    【解决方案3】:

    应该试试这个

    function update_site() {
        $.ajax(
        {
        url: "/my/page/url/",
        dataType: "html",
        cache: false,
            success: function(event) 
            {
                var update_html = /^.*<body>(.*)<\/body>.*$/g.exec(event)[1];
                $('body').html(update_html);
            }, 
            error: function(event) {
                
            }
        });
    }
    // Run every 10 minutes.
    window.setInterval(function() {
      update_site();
            // To refresh site every 15 min
    }, 15000000);

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 2023-03-21
      • 2012-07-21
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多