2011-07-09 14 views
-2

我有一個JavaScript定時器函數,它包含一個jQuery函數,並且每3000毫秒調用JS函數。如何在執行PHP頁面中的所有MySQL查詢後啓動jQuery函數?

<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>';** 
+3

所有查詢都是在頁面加載到客戶端之前執行的。 – zerkms

+0

您的查詢在服務器端完成。所以即使在頁面加載之前它也會被執行。那真的是什麼問題?錯誤? – Ibu

+0

沒有表沒有得到更新... –

回答

0

首先要嘗試的是,將JavaScript放在頁面的最底部,正好在</body>標記的上方。無論如何,建議將JavaScript放在那裏。

接下來我會嘗試是包裝所有的JavaScript和:

$(document).ready(function() { // ensure the page has fully loaded before doing anything 
    // put your code here 
}); 

讓我知道,如果其中的工作,但我可能沒有完全理解你的問題。

0

首先嚐試改變:

var t=setInterval("timer()",30000); 

var t = setInterval(timer,30000); 

你要確保你傳遞函數本身的計時器,而不是從調用函數的返回結果。

查看http://jsfiddle.net/jfriend00/mhEJG/舉例。

如果這樣不能解決問題,那麼您將不得不向我們展示SQL語句實際放置在頁面中的內容。他們看起來像他們在服務器端的權利?所以,他們必須在文檔載入之前執行。如果他們沒有在頁面中放入正確的東西,那麼這完全是服務器端的東西,與您的客戶端JavaScript無關。儘管如此,您仍然需要將該調用修復爲setInterval。