2

http://keith-wood.name/countdownRef.html#serverSyncに記載されているように、jquery カウントダウン serverSync 機能を使用していますが、カウントダウンをサーバー時間に同期させることができません。ドキュメントに書かれている私のコード:

$(selector).countdown({
    until: liftoffTime,
    serverSync: serverTime
});

function serverTime() {
    var time = null;
    $.ajax({
        url: 'http://myserver.com/serverTime.php',
        async: false,
        dataType: 'text',
        success: function (text) {
            time = new Date(text);
        },
        error: function (http, message, exc) {
            time = new Date();
        }
    });
    alert("Debug server time: " + time);
    return time;
}

serverTime.php の私の php コード

<?php 
$now = new DateTime(); 
echo $now->format("M j, Y H:i:s O")."\n"; 
?>

javascript で警告すると、出力は次のようになります。

2012 年 6 月 24 日 (日) 12:02:23 GMT+0100 (BST)

ただし、http://myserver.com/serverTime.phpにアクセスすると、時間が次の形式で表示されます。

2012 年 6 月 24 日 12:03:35 +0100

とても違う。なぜ同期していないのか、返されたさまざまな日付形式が問題になる可能性があることを誰かが明らかにすることはできますか?

4

1 に答える 1

2

あなたphpserverTime()コードは正しく動作します。

異なる時刻形式は問題ではなく、内部Date表現でもありません。

どのような値selectorliftoffTime変数に割り当てますか?

ここに私の作業テストがあります:

<html>
<head>
<title>ajax count down test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://keith-wood.name/js/jquery.countdown.js"></script> <!--maybe you shouldn't hotlink this file ;-) -->
</head>
<body>
<div id="defaultCountdown"></div>
<script>
    function serverTime() {
        var time = null;
        $.ajax({
            url: 'serverTime.php',
            async: false,
            dataType: 'text',
            success: function (text) {
                time = new Date(text);
            },
            error: function (http, message, exc) {
                time = new Date();
            }
        });
        return time;
    }

    $(function () {
        $("#defaultCountdown").countdown({
            until: new Date("Jun 24, 2012 16:00:00 +0000"),
            serverSync: serverTime
        });
    });
</script>
</body>
</html>

ご不明な点がございましたら、コメントを残してください。

于 2012-06-24T11:58:20.687 に答える