2012-08-30 198 views
0

我有兩個PHP文件(的index.php & data.php),第一次將數據發送到第二,而這種運行每隔一秒,並顯示數據。 問題是數據不更新刷新數據

也許代碼解釋更好

data.php

<?php 
    session_start(); 

    $xml = simplexml_load_file("file.xml"); // the contents of the file changes every second 
    $json = json_encode($xml); 
    $_SESSION['varname'] = $json; 
    ?> 

的index.php

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script> 
    <script language="JavaScript"> 
      window.setInterval(function() { 
     <?php 
     session_start(); 
     $json = $_SESSION['varname']; 
     ?> 

     var newdata = <?php echo $json ; ?>; 
    //code to show data 

    }, 1000); 
      </script> 

預先感謝您

+3

調用'在session_start()'*之前*在* index開始輸出。 PHP *。 – Matt

回答

1

session_start必須在任何輸出之前調用(見the documentation筆記),這意味着你有任何輸出之前調用session_start

<?php 
    session_start(); ?> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script> 
<script language="JavaScript"> 
     window.setInterval(function() { 
    <?php 
    $json = $_SESSION['varname']; 
    ?> 

    var newdata = <?php echo $json ; ?>; 
//code to show data 

}, 1000); 
     </script> 
0

你實際上並沒有從你的javas調用你的data.php腳本一點都不吝嗇。您的javascript在這一點上是靜態的(查看您的輸出源),使用newdata的相同值反覆執行相同的功能。您需要實際對AJAX調用data.php腳本來更新JSON。

請注意,該線程上的session_start註釋非常重要。這也應該得到解決,但是這並不能解決您所在地區想要使用JavaScript來獲取更新的JSON數據的根本問題,但是由於它目前僅在您的網頁上處於靜態狀態,因此無法更改newdata的值。

+0

我該如何製作AJAX? – Mils

+0

但是當我刷新頁面時,我獲得了新的數據,所以我必須明確地這樣做,數據不會自動更改 – Mils

+0

@SlimMils只需要Google AJAX即可開始。這個概念基本上是你的JavaScript會調用你的PHP腳本來獲得這些額外的數據,而無需重新加載頁面。我建議使用像jQuery這樣的javascript框架來使得執行AJAX調用變得更容易,但是隻有在你使用純JavaScript來做一些例子之後,才能真正瞭解發生了什麼。 –