在session_start()中刷新数据

时间:2012-08-30 19:56:22

标签: php javascript jquery ajax json

我有两个文件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>

提前谢谢

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

你实际上并没有从你的javascript调用你的data.php脚本。此时你的javascript只是静态的(查看输出源代码),使用newdata的相同值反复执行相同的函数。您需要实际对data.php脚本进行AJAX调用以更新JSON。

请注意,此线程上的session_start注释很重要。这也应该修复,但这不会解决你所希望使用javascript来提取更新的JSON数据的基本问题,但是没有newdata的值发生变化,因为它当前只是静态的你的页面。

相关问题