2013-01-06 49 views
0

我有一個文件data.php處理傳入的帖子,更新和從數據庫中讀取。這些帖子每秒都會發布。從javascript觸發php文件

而且我有一個帶有js腳本的'demo.php'文件,想法是我想從圖形數據庫中呈現數據。因此它必須每隔一秒更新一次。我怎麼能這樣做,我需要觸發PHP文件來獲取新的數據到JS變量?

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正確的價值( '權力' 持有),但只是一次,它不更新,它只是相同的價值,如果我打F5我會得到一個新的價值。

我的想法是:'data.php'每次有一個帖子(每秒)運行,然後'$ amp_s'的值更新,這樣我的js函數也會更新,因爲它讀取'$ amp_s'(setTimeout(graf,500))。

我放置它的方式有什麼問題嗎?

我有這樣的demo.php課程:

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

你有沒有試過jquery-ajax? –

+1

或XMLHttpRequest,如果你喜歡它沒有jQuery? (我會使用jQuery) – Popnoodles

+0

爲什麼你不試圖做一個jQuery的/ js函數,使ajax調用,並設置該功能超時1秒。在Ajax頁面上,您可以獲取數據frm數據庫並顯示它。 –

回答

0

一種方法是包括data.phpdemo.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,則必須將其聲明爲全局變量。