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 回答