2011-07-09 3 views
-2

私はjQuery関数を含むJavaScriptタイマー関数を持っており、JS関数は3000ミリ秒ごとに呼び出されます。PHPページ内のすべてのMySQLクエリを実行した後にjQuery関数を起動するには?

<script type="text/javascript"> 
     function timer(){ $("div#display_time").load("timer.php");} 

    var t=setInterval("timer()",30000); 
</script> 

私はいくつかのMySQL更新クエリを持っています。私はbodyタグ に属性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を置くことをお勧めします。私が試してみた

次の事を持つすべてのあなたの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へのその呼び出しを修正する必要があります。

関連する問題