0

カウントダウンプロセスには、http: //keith-wood.name/countdown.htmlのjquerycountdown.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」に異なる値を返しますが、タイマーは初期値のみを考慮してカウントダウンを開始することに気付きました。

ただし、条件チェックの有効期限関数内の「response.val」の現在の更新値(ajax呼び出しから)が必要です。ただし、「response.val」の初期値(タイマー設定時)のみを考慮します。onExpiry内で新しい値を取得することは可能ですか?助けてください。

4

1 に答える 1

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ここを読んでください。

于 2012-09-12T05:39:18.027 に答える