0

これで、私は Java スクリプトと PHP コードを使用し、PHP の時間関数を使用してタイムスタンプを送り返す質問を投稿しています。コードを持ってみましょう、

<?php
session_start();
echo time();
?>

<html>
<head>
    <title>my app</title>
    <script type="text/javascript" src="jquery-2.0.2.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $(this).mousemove(function(){
                var time_=new Date();

                var time=<?php echo time();?>;
                alert(time);
                $.post('loggout.php',{input: time});
            });
        });

    </script>
</head>
<body>
    <h2>we are on the main_session</h2>
</body>
</html>

問題は、マウスを動かすと、mousemove イベントが実行され、var 時間の値が表示されることです。しかし、毎回同じ値が表示されます。ページをリロードしたときにのみ値が変わります。その背後にある理由と、これを動的にする方法を教えてください

4

3 に答える 3

0

これは、PHP が 1 回 (ページの読み込み時) だけ実行されるためです。そのため、Javascripttime変数は PHP から返された時刻で満たされ、変更されることはありません。

クライアント側の時間を取得することに満足している場合は、これを使用してください。

 var time = time.getTime();

それ以外のvar time=<?php echo time();?>;

それ以外の場合は、AJAX を使用して、PHP を実行し、時間を返し、それを変数に入れるクエリを送信できます。

たとえば、次のようなことを試すことができます。

$.get('getTime.php', function(data) {
    time = data;
});

ではgetTime.php、時間をエコーするだけです。

于 2013-08-01T10:34:24.940 に答える
0

この JavaScript コードを php ファイルの任意の場所に配置します。

<script type="text/javascript">    
    var currenttime = '<?php echo date("F d, Y H:i:s"); ?>' //PHP method of getting server date    
    var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
    var serverdate=new Date(currenttime)

function padlength(what){
   var output=(what.toString().length==1)? "0"+what : what
   return output
}

function displaytime(){
   serverdate.setSeconds(serverdate.getSeconds()+1)
   var datestring=montharray[serverdate.getMonth()]+" "+padlength(serverdate.getDate())+", "+serverdate.getFullYear()
   var timestring=padlength(serverdate.getHours())+":"+padlength(serverdate.getMinutes())+":"+padlength(serverdate.getSeconds())
   document.getElementById("servertime").innerHTML=timestring
}
window.onload=function(){
setInterval("displaytime()", 1000);
}
</script>

現在の時刻を表示する場所にスパンまたは div を追加します。ページをリロードする必要はありません。

 <span id="servertime"></span>
于 2013-08-01T11:15:21.093 に答える
0

これは、PHP がバックエンド プログラミング言語であり、ページが読み込まれるとタイムスタンプがコードに書き込まれ、動的にできないためです。ただし、JS タイムスタンプを送信できます。

var time = Math.round(+new Date() / 1000);

(+日付オブジェクトを整数に変換します)

また

var time = Math.round(new Date().getTime() / 1000);

JS はミリ秒を使用するため、1000 で割る必要があります。

MDN の日付参照を参照してください。

于 2013-08-01T10:34:54.520 に答える