【问题标题】:How can I fix my JavaScript page refresh如何修复我的 JavaScript 页面刷新
【发布时间】:2012-02-01 01:53:08
【问题描述】:

我正在尝试使用 jQuery 来进行更复杂的页面刷新。使用元刷新,如果页面无法加载一次,它将不会再次加载。我正在尝试制作一些会反复尝试加载的东西-如果它​​无法加载一次,它将在下一次重试,这样如果最后一次加载成功,我将看到页面的新版本,无论是否存在是干预故障。

我目前的代码是:

<script language="JavaScript" type="text/javascript" src="/include/jquery.js">
</script>
<script language="JavaScript">
    var delay=5*1000;
    function load(){
        setTimeout(load, delay);
        jQuery("#content").load("calendar_internal.cgi?days=40", function(){
            jQuery("#preload").hide("slow");
        });
        delay = 15*60*1000;
    }
    jQuery("#content").load("calendar_internal.cgi?days=40", load);
</script>

据我所知,这是一个 noop。它不会刷新。

我怎样才能让它至少在基本级别上工作,以便它刷新但一次糟糕的刷新并不意味着如果我想查看页面就必须重新加载?

--编辑--

我现在所拥有的显然正在工作(经过轻度测试):

<script language="JavaScript">
var placeholder = jQuery('<div></div>');
function load(){
    setTimeout(load, 15*60*1000);
    placeholder.load("logistic_ajax.cgi", function(){
        if (placeholder.html()) 
            jQuery('#content').html(placeholder.html());
    })
}
load();
</script>

【问题讨论】:

  • 为什么在load函数第一行的setTimeout中调用load函数?
  • 为了稳定。想法是,首先设置下一次运行,然后尝试网络加载,这样如果网络加载失败,您不会丢失超过一次尝试的加载。
  • 也许我没有看到这里的逻辑,但这不是无限递归调用吗? load 函数的第一行调用 setTimeout 调用 load 函数等等。
  • 第一次加载调用 setTimeout 并完成。第二次加载调用 setTimeout 并完成。第三次加载调用 setTimeout 并完成。它是无限递归,但在堆栈上没有无限深度。

标签: javascript jquery refresh reload


【解决方案1】:
var $placeHolder = $('<div />');
$placeHolder.load(yourURL,function() {
    if ($placeHolder.html()) {
        $("#content").html($placeHolder.html());
    }
});

或类似的东西。这样,您就不会做全部或不做任何事情。如果返回的 HTML 出现问题,您可以检查您的“if”条件。不确定响应的细节,因此您需要自行讨论或让我知道更多细节。

干杯。

【讨论】:

  • 嗯,它似乎仍然没有加载页面;我得到一个空白页面,其中包含加载区域之外的骨骼。
  • @JonathanHayward 你可以在这里看到实时版本 -> kitgui.com/docs 查看源代码并查看声明的 javascript,我相信它在 /js/docs/js 中。您正在做一些我不知道的事情,例如服务器错误?选择器错误?等等等等很多事情都可能出错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 2023-03-19
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多