Jquery倒计时onExpiry功能

时间:2012-09-12 05:13:56

标签: jquery timer

我正在使用来自http://keith-wood.name/countdown.html的jquery countdown.js进行倒计时过程。它的工作正常。问题出在onExpiry功能上。 请参考以下代码,

recursivecall = setTimeout(function () {
            get_last_auction();
        }, 10000);

function get_last_auction() {
 jQuery.ajax({
    type: "POST",
    url: "ajax_get_lastauction",
    dataType: 'json',
    success: function (response) { 

    jQuery('.countbox').countdown({
                    layout: '<b>{d<}{dnn}D:{d>}' + '{hnn}:{mnn}:{snn}</b>',
                    timeSeparator: ':',
                    onExpiry: function () { 
                        if(response.val > 10) {
                        //Mycode
                        }
                    },
                    until: response.clock        
                    }); 
    }
  });                       

 }

在这里我注意到,虽然recursivecall为每次调用返回“response.clock”的不同值,但是计时器只考虑初始值并开始倒计时。

但是,我在条件检查的到期函数中需要当前更新的值(来自我的ajax调用)for“response.val”。但它只考虑“response.val”的初始值(当设置定时器时)。是否可以在onExpiry中获取新值?请帮忙。

1 个答案:

答案 0 :(得分:0)

请尝试此操作,只是尝试使用complete而不是success,因为它是异步功能。让我知道现在是否有效。

function get_last_auction() {
 var value = null;

 jQuery.ajax({
    type: "POST",
    url: "ajax_get_lastauction",
    dataType: 'json',
    success: function (response) { 
        value = response
    },
    complete: function(){
       jQuery('.countbox').countdown({
                    layout: '<b>{d<}{dnn}D:{d>}' + '{hnn}:{mnn}:{snn}</b>',
                    timeSeparator: ':',
                    onExpiry: function () { 
                        if(value.val > 10) {
                        //Mycode
                        }
                    },
                    until: value.clock        
     }); 
    }
  });                       

 }

<强>更新

如果无效,请使用alwaysExpire: true。阅读here