如何在PHP页面中执行所有MySQL查询后启动jQuery函数


How to start a jQuery function after executing all the MySQL queries in that PHP page?

我有一个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的调用