在ajax回答之后解析了Highchart数据

时间:2013-04-28 13:18:07

标签: php json jquery highcharts

我从jquery ajax函数收到了一个响应,如:

["{y:55,color:'red'}", "{y:21}", "{y:12}", "{y:6}", "{y:3}", "{y:3}"]

在我的PHP代码中,我通过数组中的json_encode进行编码:

foreach($pp as $value){ 
$tmp[]='{y:'.round(100*$pp/$sum_pp,0).'}';
}
echo json_encode(array("tableau"=>$tmp));

我希望在我的Highchart图表中使用它:

[{y:55,color:'red'}, {y:21}, {y:12}, {y:6}, {y:3}, {y:3}]

如何格式化我的数组来绘制我的答案?我这样做是为了能够改变系列中一列的颜色。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

如果您有可能更改PHP代码,我会选择输出类似于Highcharts中使用的系列对象的内容,请参阅http://api.highcharts.com/highcharts#series

这是一个看起来像这样的对象:

{
    data: [y1, y2, y3],
    color: '#FF0000'
}

这会使你的PHP代码看起来像这样:

foreach($pp as $value){ 
    $tmp[] = round(100*$pp/$sum_pp,0);
}
echo json_encode(array(
    "data" => $tmp,
    "color" => '#FF0000'
));

在旁注中,像你在问题中所做的那样填写$tmp是不好的。更好的方法是:

foreach($pp as $value){ 
    $tmp[] = array('y' => round(100*$pp/$sum_pp,0)); 
} 
echo json_encode(array("data"=>$tmp));

因为这将在您的Javascript中解析时创建“propper”对象。我的代码中的上述两个示例都将生成您可以直接在Highcharts中使用的内容。请注意,series参数采用一系列数组。所以在你的javascript中你必须这样做:

series: [
    data: response
]

其中response是PHP脚本中json_encode的输出。