私はDjango でjQuery Countdown プラグインを使用して、すべてのビューに対して正確で同期されたデータを生成しています。
すべてのブラウザーに表示される時刻を同期するには、プラグインの serverSync 関数を使用して、次のように (例と非常によく似た) データを渡します。
function serverTime() {
var time;
$.ajax({url: '/ajax/get-server-time/',
async: false, dataType: 'text',
success: function(text) {
time = new Date(text);
}, error: function(http, message, exc) {
time = new Date();
}});
return time;
}
そして、私のカウントダウンinitセレクター関数はそのままです(Djangoを介してendDatetimeの要素のデータにunixtimeを追加します):
function initAllTimers(selected){
$(selected).each(function(){
endDatetime = new Date($(this).attr("data-unixtime") * 1000);
$(this).countdown({until: endDatetime, serverSync: serverTime});
});
}
Django テンプレートは、次のようにカウントダウンを入力する各フィールドを生成します。
<span class="timeLeft" data-unixtime="1334898000"></span>
そして、次のようにこれらのフィールドにタイムカウントを適用します。
initAllTimers('.timeLeft');
最後に、Django ビュー メソッドまたはこのプラグインが取得するタイムスタンプを生成します (私の serverTime() メソッドを介して):
#points to /ajax/get-server-time/
def get_server_time(request):
now = datetime.now()
response = HttpResponse( now.isoformat())
response['Expires'] = 'Fri, 1 Jan 2010 00:00:00 GMT'
response['Content-Type'] = 'text/plain; charset=utf-8'
response['Cache-Control'] = 'no-cache, must-revalidate'
return response
正しくレンダリングされますが、異なるコンピューター間で同期されません。私の Mac は、Windows コンピューターとは異なる残り時間を示します。
私はこの部分で間違いを犯していると思います:
カウントダウンの例のphpの例は$now->format("M j, Y H:i:s O")."\n";
私のpython関数と同じdatetime.now().isoformat()
ですか?