高图数据解析后ajax回答


Highchart data parsed after ajax answer

我从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));

我想有这个,在我的高图中使用:

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

我要如何格式化我的数组来图表我的答案?我这样做是为了能够改变一个列的颜色。

感谢您的宝贵时间。

如果您有可能更改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中解析时会创建一个"proper"对象。上面两个例子在我的代码将产生一些你可以直接在Highcharts中使用。请注意,series参数接受一个序列数组。在javascript中,你需要输入:

series: [
    data: response
]

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