我有一个JavaScript计时器函数,它包含一个jQuery函数,JS函数每3000毫秒调用一次。
<script type="text/javascript">
function timer(){ $("div#display_time").load("timer.php");}
var t=setInterval("timer()",30000);
</script>
在body标签内,我有一些MySQL更新查询。我通过使用onload
属性来触发body
标签,但是这些查询在函数被调用之前不会被执行。
<body onload="timer()">
<?php
........................
.......................
//here we will be using o,o,o,7,7,2011 as the standard of our time...
$t=((time())-(gmmktime(0,0,0,7,7,2011)));
$sql="UPDATE users
SET
user_level=1,
current_qno=1,
start_time=".$t.
"WHERE user_id=".htmlentities($_SESSION['user_id']);
$result=mysql_query($sql);
if(!$result)
{
echo'<p>some thing went wrong' .mysql_error(). '</p>';
}
$_SESSION['user_level']=1;
**echo'<div id="display_time" "></div>';**
首先,把你的javascript放在页面的最底部,正上方的标记。无论如何,建议把javascript放在那里。
下一件事我要尝试的是包装所有的javascript:
$(document).ready(function() { // ensure the page has fully loaded before doing anything
// put your code here
});
让我知道如果其中任何一个工作,但我可能不完全理解你的问题。
首先试着改变:
var t=setInterval("timer()",30000);
var t = setInterval(timer,30000);
要确保将函数本身传递给计时器,而不是调用函数返回的结果。
示例见http://jsfiddle.net/jfriend00/mhEJG/
如果这不能解决问题,那么您必须向我们展示SQL语句实际上在页面中放入了什么。在我看来他们是服务于服务器的,对吧?因此,它们必须在文档的onload发生之前被执行。如果他们没有把正确的东西放在页面中,那么这完全是服务器端的事情,与您的客户端javascript无关。你需要修正setInterval的调用