2011-02-05 36 views
3

jQueryを使用してウェブサーバーの時刻を取得するにはどうすればよいですか?jQueryでデフォルトのサーバー時間を取得していますか?

+3

あなたはjQueryのは、クライアントではなくサーバー上で実行することを実現します、はい? –

+0

何らかの方法で、または日付形式で、サーバーに報告する必要があります。あなたのウェブ環境は何ですか - ランプ? 。ネット? – Andrey

答えて

17

サーバー側で特定のコードや有効なパスがなくても動作する方法があります。

try { 
    var date = new Date($.ajax({'type': 'HEAD', 'url': '/'}).getResponseHeader('Date')); 
} 
catch(err) { 
    var date = null; 
} 

これは、サーバーが常に「日付」ヘッダーを返すことを前提としています。あなたのサーバーの細部にいくつかの実験が必要になります。

追加する編集:これはこれを行うためのより賢明な方法です。 「正しい」方法は、サーバー側のスクリプトをセットアップしてサーバーの時間をすばやく返すか、スクリプトが実行されるページにインラインで挿入するか、クライアント側の時間を使用して、十分に良い。

+0

名誉!これはハックですが、一部の制限付きホスティングのように、サーバー側のコードにアクセスできない場合は唯一の解決策です。 – Andrey

+1

ニースのアプローチ:)とHEADリクエストが帯域幅を節約するオプションになる可能性があります –

+0

$ .ajax()を使用してGETまたはPOST以外のリクエストを行う方法はありませんでしたが、やり方がある。 HEAD要求を行うようにコードを修正しました。しかし、これは、HEADリクエストに正しく応答しないサーバに時折遭遇するという点で、追加の警告が追加されます。 –

3

サーバコードを取得するには、レンダリング中にページに時間を追加する方法が必要です。また、リアルタイムの時間(ops)が必要な場合は、ajaxを作成する必要がありますjQueryを使用してサーバーに呼び出します。 これは、ajaxリクエストに応答するサーバー側に何かを持つ必要があることを意味します。あなたはどの言語をサーバー側に使用していますか?

2

あなたは、PHPがサーバー上で実行されているようなものを持っていればあなただけのスクリプトにそれを埋め込むことで、日付/時刻を設定するには、このようなものを入れることができます:

<script> 
    var date = new Date("<?php echo date("Y-m-d H:i:s"); ?>"); 
    alert(date); 
</script> 
+0

jsとphpを混合するのは良い方法ではありません –

2

使用ギャレットの答えが、$。 ajaxは応答時間が短く、 'getResponseHeader'メソッドをすぐに呼び出すことはできません。

私はこれを修正することができると思う:

var Date1 = null; 
var endInterval; 
function DoJob() { 
    if (Date1 == null) { 
     if (endInterval) 
      clearInterval(endInterval); 
     endInterval = setInterval(DoJob, 100); 
     return; 
    } 
    /* 
     job to do... 
    */ 
    if (endInterval) 
     clearInterval(endInterval); 
} 
try { 
    var oHead = $.ajax({ 'type': 'HEAD', 'url': '/' }).success(function() { 
     Date1 = new Date(oHead.getResponseHeader('Date')); 
    }); 
} 
catch (err) { 
    Date1 = null; 
} 
DoJob(); 
関連する問題