【问题标题】:How to get server time and update every second?如何获取服务器时间并每秒更新一次?
【发布时间】:2012-05-21 18:46:45
【问题描述】:

我正在向特定服务器发出 ajax 请求并获得响应。我正在做跨域请求,所以使用 jsonp。有没有办法让我提出请求的服务器时间。写php script 或者只做ajax 请求会更好吗?假设我提出以下请求:

$.ajax({
        dataType: 'jsonp',
        data: 'jsonp=date',
        jsonp: 'jsonp_callback',                
        url: 'http://www.google.com',   
        success: function (data) {                  
        }
});

如何从这个请求中获取服务器时间?如果有任何建议,请提供帮助。此外,如果我使用setInterval 方法每秒更新时间,那么在获得时间之后,在特定时间更新时间之后发出相同的 ajax 请求会是一项昂贵的操作还是更好。我有实时数据随时间更新。

【问题讨论】:

    标签: php javascript jquery ajax date


    【解决方案1】:

    如果服务器没有明确提供给您,您将无法获得服务器的时间。
    您可以阅读它的 HTTP 标头,但这不是一件好事,因为标头可能并非每次都提供此信息,或者它们的格式可能并不总是相同。

    另外,我看不出每秒钟都问它的意义。
    询问一次,计算它和你的时间之间的差异,然后就可以了:你得到了时间差异,你可以在任何你想要的地方使用它。

    请记住,即使您获得了时间,由于网络的延迟,您获得的时间与服务器的实时时间之间也可能存在差异。

    【讨论】:

    • 我发出请求的服务器当前使用的是 UTC 时间。所以我想利用这段时间,然后根据客户的时区进行转换
    • HTTP 标头在 jsonp 上不可用,因为没有使用 XHR 对象。
    • @JonathanM 感谢您指出这一点。随意编辑我的答案。 :)
    • @Sammy,无需编辑。关于获得一次时间并考虑延迟的好答案。
    • @user850234 如果您已经知道服务器时区,只需使用 PHP 将您的本地日期转换为该时区时间!
    【解决方案2】:

    第 1 部分的答案是,您需要在响应中输出服务器时间,以便您的 javascript 读取它。对于第 2 部分,我将等待加载响应,然后使用 setTimeout。使用setInterval 意味着您可能会在第一个响应返回之前触发两次ajax 调用。

    【讨论】:

      【解决方案3】:

      当您建议服务器时间时,您是指正在执行调用的脚本还是服务器上的实际时间?

      这有什么需要,例如,您是否试图找出调用之间的时间以自动每 5 秒调用一次?

      如果您只是简单地从 javascript 中获取语言环境时间,并与您在 ajax 中获得响应时进行比较就足够了?

      否则,由于其“客户端”性质,javascript 将无法获取服务器时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-26
        • 2012-10-30
        • 1970-01-01
        • 2014-12-29
        • 2020-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多