2014-01-29 46 views
2

我目前使用的是flipclockJavascript遞歸倒計時10s到0

我在與時鐘本身沒有問題。時鐘在我身邊正常工作。對於我來說,鬧鐘完成後會發生什麼,我希望我的網頁上的人們繼續倒計時10秒,以確保他們不想繼續投票。

是的。我正在實時執行此操作(同一頁面上的每個人都將看到相同的倒計時),所以我使用長輪詢來幫助我做到這一點。對於長時間輪詢,我使用Github的https://github.com/panique/php-long-polling

更糟糕的是,誰在最後10秒倒計時過程中,點擊投票按鈕將再次倒計時重置爲10和遞歸地做到這一點,直到沒人做的。

我想運行的JavaScript函數每次有人的時鐘到達零遞歸的。這將確保每個進入最後倒數時間範圍的人員,無論任何輕微的時間延遲將在同一時間同樣開始。

,因爲我是在實時運行這個,麻煩的是真正得到時間連接到我的網頁每家每戶的其他計算機上具有相同的倒計時。

我已經試過如下:

function resetTime(){ 
    $.post('<?php echo $path ?>/ajax_bid_room_files/last_seconds.php',function(data){ //this script will attempt to create new text file to keep track of time 
    setInterval(function(){ 
     $.post('<?php echo $path ?>/ajax_bid_room_files/updatetiming.php',function(data){//this script will update text file to keep track of current countdown 
     $("#remaining_timeleft").html(data); //where data is the current countdown 
     }); 
    },1000); 
    }); 
} 


var clock2 = $('.bid_duration2').FlipClock({ 
    countdown:true, 
    callbacks:{ 
    stop: function() { 
     resetTime(); 
     if($("#remaining_timeleft").html()>0){ 
     $("#vote").click(function()){ 
      resetTime(); 
     } 
     } 
    } 
    } 
}); 

什麼實際上,我想在這裏嘗試是一次flipclock倒計時停止,回調被調用,並重新設定時間()被加載。如果在倒數計時期間任何人按#vote,則重新啓動resetTime並重置時間。

我不完全相信這將工作,因爲我實際上運行一個.post每隔1秒的間隔,將調用一個php腳本來做一個文本文件fwrite(即使它不是數據庫)但我懷疑這個請求會在一秒鐘內完成。

但是,如果任何人都可以在這裏提供一些指導,我會很樂意欣賞它。

或者有其他更好的解決辦法,我會很高興聽到他們出來爲好。

請澄清我的任何疑慮。我很樂意澄清我的問題以獲得更清晰的解決方案。

+0

瞭解網絡套接字 – epascarello

回答

0

只要做到這一點,而不回調和Ajax的部分,保持簡單是這樣的:

var ctime = 10, 
count = setInterval(showVote,1000); 
$('.vote button').click(function() { 
    clearVote(); 
}); 
function showVote() { 
    --ctime; 
    $('.time').html(ctime); 
    if (ctime==0) { 
     clearVote(); 
    } 
} 
function clearVote() { 
    clearInterval(count); 
    $('.vote').hide(); 
    $('.page').show(); 
} 

Here a jsfiddle