0

着信投稿、更新、データベースからの読み取りを処理するファイル「data.php」があります。投稿は毎秒来ます。

そして、jsスクリプトを含むファイル「demo.php」があります。データベースのデータをグラフで表示したいという考えです。..だからそれは毎秒かそこらを更新する必要があります。どうすればそれを行うことができますか、js変数に新しいデータを取得するために何らかの方法でphpファイルをトリガーする必要がありますか?

data.php:

<?php
     include "k_connect.php";
     if(isset($_POST['value']))
     {

        $amp_f = number_format($_POST['value'], 2);
        $amp = explode('.', $amp_f);
        $d_tid = gmdate('Y-m-d H:i:s');

        $amp =str_replace(",","",$amp);
        $tid = explode(' ',$d_tid);
        $tid = str_replace(":","",$tid);

        mysql_query("UPDATE impdata SET amp=$amp[0]
        WHERE ID=1");
      }

      $tid_back=array();
      $amp_back = array();

      $x=0;
      $SQL = "SELECT * FROM impdata";
      $result = mysql_query($SQL);
      while ( $db_field = mysql_fetch_assoc($result) ) {
        $amp_back["amp"] = $db_field['amp'];
        $tid_back["tid"] = $db_field['tid'];    
        $amp_s =  $amp_s . json_encode($amp_back) . " ";
        $tid_s = $tid_s . json_encode($tid_back) . " ";
        $x++;
      }

?>

demo.php:

  function graf() {
       var amp = <?php echo json_encode($amp_s); ?>;
       var power = amp.split(":");
       alert(power[1].match(/\d+/g));
       var req = new XMLHttpRequest();
       setTimeout(graf, 500);
  }
  graf();

demo.php('power'はそれを保持します)で正しい値を取得しますが、一度だけ更新されません。同じ値です。f5を押すと、新しい値が取得されます。

私の考えは次のとおりです。「data.php」は投稿があるたびに(毎秒)実行され、「$ amp_s」の値が更新されます。これにより、「$ amp_s」の値を読み取るため、js関数も更新されます。 (setTimeout(graf、500))。

私がそれを立てる方法に何か問題がありますか?

もちろん、これはdemo.phpにあります。

include "k_connect.php";
include('data.php');
4

1 に答える 1

0

data.php1つの方法は、次のdemo.phpように含めることです。

<?php
header('Content-type: application/javascript');

include('/path/to/data.php');
?>
function graf() {
   var amp = <?php echo json_encode($amp_s); ?>;
   var power = amp.split(":");
   alert(power[1].match(/\d+/g));
   var req = new XMLHttpRequest();
   setTimeout(graf, 500);
}
graf();

その後、通常どおりに JavaScript を呼び出すことができます<script type="text/javascript src="demo.php"></script>。また、$amp_s関数で定義されているかどうかによっては、グローバル変数として宣言する必要があります。

于 2013-01-06T03:59:17.023 に答える