在此我发布了一个问题,其中我使用的是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 time的值时。但每次它显示相同的值。该值仅在我重新加载页面时更改。所以请让我知道它背后的原因以及如何使这个动态
答案 0 :(得分:0)
这是因为PHP只运行一次 - 当页面加载时。因此,Javascript time
变量将填充PHP返回的时间,然后永远不会更改。
如果您很高兴获得客户端时间,请使用:
var time = time.getTime();
而不是var time=<?php echo time();?>;
否则,您可以使用AJAX发送一个运行某些PHP的查询,返回时间并将其放入变量中。
例如,您可以尝试这样的事情:
$.get('getTime.php', function(data) {
time = data;
});
在getTime.php
中,只是回应时间。
答案 1 :(得分:0)
这是因为PHP是后端编程语言,一旦你的页面加载时间戳写入代码并且不能动态。但是你可以发送JS时间戳:
var time = Math.round(+new Date() / 1000);
(+
将日期对象转换为整数)
或
var time = Math.round(new Date().getTime() / 1000);
需要除以1000,因为JS使用毫秒。
请参阅MDN上的Date参考。
答案 2 :(得分: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>
在想要显示当前时间的位置添加span或div。无需重新加载页面。
<span id="servertime"></span>