Engl12
Engl12

Reputation: 139

Send json data into a php variable to be used in javascript

I'm quite new to php and don't actually know if this is possible

Im currently outputting JSON code with php using the following code

echo  json_encode($output, JSON_NUMERIC_CHECK);

But what I want to do is have the above data inside a variable.

I tried

$JSONDATAX = json_encode($output, JSON_NUMERIC_CHECK);

But it doesn't seem to like it when I call $JSONDATAX.

The original echo way works completely fine.

edit ........

      $lrs = CDB::ExecuteQuery($sql);

            if($lrs) {
    $jsonData = convert($lrs);
}



function convert($lrs) {

    $intermediate = array();

      while ($vals = CDB::GetAssoc($lrs))  {
        $key = $vals['POS'];
        $x = $vals['CODE'];
        $y = $vals['COUNT'];
        $intermediate[$key][] = array('x' => $x, 'y' => $y);
    }


   $output = array();

    foreach($intermediate as $key => $values) {
        $output[] = array(
            "key" => $key,
            'values' => $values
        );
    }

  $data1 = json_encode($output, JSON_NUMERIC_CHECK);


}










?>
<script>

 var negative_test_data = <?php echo $data1; ?>;

var chart;
nv.addGraph(function() {
    chart = nv.models.multiBarChart()
    .color(d3.scale.category10().range())
      .rotateLabels(0)      //Angle to rotate x-axis labels.
      .transitionDuration(300)
       .showControls(true)   //Allow user to switch between 'Grouped' and 'Stacked' mode.
      .groupSpacing(0.24)    //Distance between each group of bars.

      ;

As you can see, I am using php just after var negative_test_data , but it doesn't produce anything.

Upvotes: 0

Views: 128

Answers (2)

Roel Harbers
Roel Harbers

Reputation: 1054

In your edited example, $data is a local variable inside the convert function, so it cannot be accessed outside that function. the result of json_encode should be returned:

$data1 = json_encode($output, JSON_NUMERIC_CHECK);

should be

return json_encode($output, JSON_NUMERIC_CHECK);

Then, the result of the convert function can be echoed:

var negative_test_data = <?php echo $data1; ?>;

should be

var negative_test_data = <?php echo convert($lrs); ?>;

(There should probably be a an additional if around that whole part, depending on what you want to happen when $lrs does not evaluate to true)

Upvotes: 1

Marc B
Marc B

Reputation: 360572

This should be all you really need:

$phpvar = json_encode($output);
echo "<script>var negative_test_data = {$phpvar};</script>";

Upvotes: 0

Related Questions