2013-01-06 51 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,则必须将其声明为全局变量。