0

我正在使用jQuery Countdown 插件来实现倒计时并在计时器到期时调用 Web 服务。

问题是我在页面上使用 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();
    }

出于某种原因,这会根据请求创建一个新的 Countdown 实例,从而在 Countdown 到期时导致对 Webservice 的大量调用。

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

编辑

在文档中找到了这个,虽然不适合我

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

3 回答 3

1

好的,想通了,只需要调用

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

在开始请求

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();
}
于 2009-03-27T07:21:15.460 回答
0

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

这是一些阅读比较setInterval()setTimeout()

仅在 AJAX 调用的回调函数中重新创建计时器的另一个选项。这将确保仅在先前的 AJAX 调用完成后才启动新计时器,例如:

 function CheckServer() {
     $.get('/get_something.html', function() {
         timer = setTimeout('CheckServer', 5000);
     });
 }
于 2009-03-27T06:57:22.023 回答
0

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

倒计时如何使用“jquery.countdown.js”插件与jquery同步?

请您找到解决方案并告诉我谢谢。

于 2010-04-10T11:41:05.530 回答