0

jQuery カウントダウン プラグインを使用してカウントダウンを実装し、タイマーが切れたときに 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 が多数呼び出されます。

カウントダウンのインスタンスが一度に 1 つだけ存在するようにするにはどうすればよいですか?

編集

ドキュメントでこれを見つけましたが、私にはそれをしません

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

3 に答える 3

1

わかりました、それを理解しました、ただ呼び出す必要がありました

$('#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();
}
于 2009-03-27T07:21:15.460 に答える
0

同様のタイプの問題があります。jquery.countdown.jsプラグインのserversync関数を使用して、サーバーから現在の時刻を取得するためにWebサービスを使用しています。私は問題に直面しています

カウントダウンは「jquery.countdown.js」プラグインを使用してjqueryと同期する方法を教えてください。

解決策を見つけて、感謝の気持ちを教えてください。

于 2010-04-10T11:41:05.530 に答える
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 に答える