将json数据发送到php变量以在javascript中使用

时间:2014-10-09 14:22:46

标签: php json

我是php的新手,实际上并不知道这是否可能

我正在使用以下代码

使用php输出JSON代码
echo  json_encode($output, JSON_NUMERIC_CHECK);

但我想要做的是将上述数据放在变量中。

我试过

$JSONDATAX = json_encode($output, JSON_NUMERIC_CHECK);

但是当我调用$ JSONDATAX时它似乎不喜欢它。

原始回声方式完全正常。

编辑........

      $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.

      ;

正如你所看到的,我在var negative_test_data之后使用php,但它不会产生任何东西。

2 个答案:

答案 0 :(得分:1)

在您编辑的示例中,$ data是convert函数内的局部变量,因此无法在该函数外部访问它。应该返回json_encode的结果:

$data1 = json_encode($output, JSON_NUMERIC_CHECK);

应该是

return json_encode($output, JSON_NUMERIC_CHECK);

然后,可以回显转换函数的结果:

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

应该是

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

(如果围绕整个部分可能会有一个额外的,取决于当$ lrs没有评估为真时你想要发生什么)

答案 1 :(得分:0)

这应该是你真正需要的:

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