【问题标题】:AJAX: Reload load() on error after X secondsAJAX:在 X 秒后出错时重新加载 load()
【发布时间】:2011-07-20 01:22:51
【问题描述】:

我使用以下函数通过 load() 从文件中获取信息。如果内容没有按应有的方式加载,是否会显示错误消息。这很好用,但我想在 X 秒后重新加载请求。我已经做到了这一点:

var tick = function() {
    $('#fetch-1').hide();
    $('#fetch-2').hide();
    $('#fetch-3').hide();
    $('#fetch-4').hide();
    $('#fetch-5').hide();
    $('#fetch-6').hide();

    $('#fetch-1-error').show();
    $('#fetch-2-error').show();
    $('#fetch-3-error').show();
    $('#fetch-4-error').show();
    $('#fetch-5-error').show();
    $('#fetch-6-error').show();
}

var loadTimeout = setTimeout(tick, 1000);
var tack = 1000;

    $.ajax({
        url: '/game/configs/required/jquery-fetch/fetch-1.php?i=<?php echo $row["id"]; ?>',
        timeout: tack,
        cache: false,
        success: function(data) {
            $('#fetch-tpb-filesize').load('/game/configs/required/jquery-fetch/fetch-1.php?i=<?php echo $row["id"]; ?>');
            clearTimeout(loadTimeout);
        },
        error: function(data) {
            setInterval(function() {
                $('#fetch-1').show();
                $('#fetch-1').load('/game/configs/required/jquery-fetch/fetch-1.php?i=<?php echo $row["id"]; ?>');
                $('#fetch-1-error').hide();
            }, 1000);
        }
    });

正如您在错误中看到的那样,我试图让它重新加载,但它并没有像第一次那样在 1 秒后停止。这里有谁知道如何解决这个问题?

【问题讨论】:

  • 给这些东西一个通用的类名,这样你就不需要 6 条隐藏线和 6 条显示线了!

标签: jquery ajax reload


【解决方案1】:

您在错误函数中使用setInterval,它将每秒调用该代码块。

另外,您正在使用 jQuery 方法来为您完成所有繁琐的工作。如果要使用 timeout:tack,则需要再次使用 $.ajax。你为什么不把它变成一个函数然后再次调用它,而不是到处复制粘贴代码和代码。

【讨论】:

  • 感谢您的回答。我还不擅长 jQuery 和 AJAX,但我正在学习。对于这个问题,我很抱歉,但函数的外观如何?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-06
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多