2014-10-09 110 views
0

使用我很新的PHP和真的不知道这是可能的发送JSON数据到一个PHP变量在JavaScript

即时通讯目前使用下面的代码

使用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. 

     ; 

正如你所看到的,我使用的PHP只是变种negative_test_data之后,却什么都不做。

+0

如果你做一个'print_r($ output)'你会得到一个数组吗? – 2014-10-09 14:24:33

+0

当你试图“回声”时,你可以显示代码吗? – andyroo 2014-10-09 14:28:34

+0

我用上面的代码回显一个数组,回显它,并且这对我正在使用的图表正常工作。但我试图说如果我尝试使它变成一个变量,它不起作用。 – Engl12 2014-10-09 14:28:46

回答

1

在你编辑的例子,$数据转换函数内的局部变量,因此它不能在函数外部访问。 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); ?>; 

(应该可能是b e一个额外的,如果在整个部分,取决于你想要发生什么时,$ lrs不计算为真)

+0

- 谢谢你的答案男人,工作的一种享受!虽然我不得不做var negative_test_data = <?php echo convert($ jsonData); ?>;而不是$ lrs – Engl12 2014-10-09 19:48:46

0

这应该是你真正需要的:

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

我用过,$ phpvar = json_encode($ output,JSON_NUMERIC_CHECK); 和我的