Mils
Mils

Reputation: 1498

Refreshing data in session_start()

I have two files php(index.php & data.php), the first send data to the second, and this it runs every one second and show the data. The problem is the data is not updating

Maybe the code explains better

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>

Thank you in advance

Upvotes: 0

Views: 130

Answers (2)

Mike Brant
Mike Brant

Reputation: 71384

You are not actually calling your data.php script from your javascript at all. Your javascript is just static at this point (look at your output source), executing the same function over and over again with the same value for newdata. You need to actually make an AJAX call to the data.php script to update the JSON.

Note that the session_start comments on this thread are important. This should be fixed as well, but that will not solve the fundamental problem you area having of wanting to use javascript to pull in the updated JSON data, but not having the value of newdata change because it is currently just static on your page.

Upvotes: 0

Kristoffer Sall-Storgaard
Kristoffer Sall-Storgaard

Reputation: 10636

session_start must be called before any output (see notes in the documentation) which means you have to call session_start before any output:

<?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>

Upvotes: 1

Related Questions