代码之家  ›  专栏  ›  技术社区  ›  roman m

jQuery倒计时插件和AJAX

  •  0
  • roman m  · 技术社区  · 17 年前

    我正在使用 jQuery Countdown plugin

    问题是我在页面上使用AJAX,并且必须对每个AJAX请求重新设置倒计时,如下所示:

    var prm = Sys.WebForms.PageRequestManager.getInstance();
    
    prm.add_endRequest(SetupTimer);
    
    /*Initial setup*/
    $(document).ready(function() {
        SetupTimer();
    });
    
    function SetupTimer() {
            var serverTime = new Date();
            var cutoffTime = new Date($("#<%= cutoffTime.ClientID %>").val());
            serverTime.setHours(serverTime.getHours());
            if (serverTime < cutoffTime) {
                $('#timer').countdown('destroy'); /*should work, but doesn't*/
                $('#timer').countdown({ until: cutoffTime, serverTime: serverTime, onExpiry: OrderingEnded, format: 'yowdHMS' });
            } 
            else
                OrderingEnded();
        }
    

    出于某种原因,这会在每次请求时创建一个新的倒计时实例,从而在倒计时过期时对Webservice进行大量调用。

    如何确保一次只存在一个倒计时实例?

    编辑

            $('#timer').countdown('destroy');
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   Darryl Hein IrishChieftain    17 年前

    好吧,我想好了,只需要打电话给

    $('#timer').countdown('destroy');
    

    关于beginRequest

    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_beginRequest(DeleteTimer);
    prm.add_endRequest(SetupTimer);
    
    $(document).ready(function() {
        SetupTimer();
    });
    
    
    function DeleteTimer() {
        $('#timer').countdown('destroy');
    }
    function SetupTimer() {
        var serverTime = new Date();
        var cutoffTime = new Date($("#<%= cutoffTime.ClientID %>").val());
        serverTime.setHours(serverTime.getHours());
        if (serverTime < cutoffTime) {          
            $('#timer').countdown({ until: cutoffTime, serverTime: serverTime, onExpiry: OrderingEnded, format: 'yowdHMS' });
        } 
        else
            OrderingEnded();
    }
    
        2
  •  0
  •   Darryl Hein IrishChieftain    17 年前

    你可能想要 setInterval() . 它允许您每X毫秒重复一次计时器。你可以用 clearInterval() 阻止它。

    Here is some reading 比较 setInterval() setTimeout() .

     function CheckServer() {
         $.get('/get_something.html', function() {
             timer = setTimeout('CheckServer', 5000);
         });
     }
    
        3
  •  0
  •   Community Mohan Dere    9 年前

    我也有类似的问题。我正在使用jquery.countdown.js插件中的serversync函数使用web服务从服务器获取当前时间。我面临着一个问题

    How countdown get Synchronise with jquery using "jquery.countdown.js" plugin?