2012-08-30 208 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来做一些例子之后,才能真正了解发生了什么。 –