我遇到了一个简单的事情,即使用HighChart在Basic Bar中加载系列数据。我已经使用AJAX调用返回了数据,但问题是当返回数据时,图表不会被加载。但是,如果我将我返回的数据复制/粘贴到系列中,它就可以正常工作。
提到我没有使用JSON编码。我刚刚制作了弦乐并回应了它。下面是我实际想要实现的,我的JS / HTML和我要显示的返回字符串
高图表示例:
我的Javascript和HTML
我的返回数据:
{name:'Total_Trans',data:[8798,88976,18564,8486]}, {name:'Sucesss',data:[6304,57642,8702,5202]}, {name:'MoreThan30',data:[208,1588,449,163]}, {name:'LessThan30',data:[8551,86864,18034,8290]}, {name:'NadraMoreThan30',data:[1535,4187,2634,1310]}, {name:'NadraLessThan30',data:[6024,66179,9812,5239]}
答案 0 :(得分:0)
您返回的数据不是 JSON。
至少它需要在" []"迹象。而不是
{name:'Total_Trans',data:[8798,88976,18564,8486]}, {name:'Sucesss'...,5239]}
你需要
[{name:'Total_Trans',data:[8798,88976,18564,8486]}, {name:'Sucesss'...,5239]}]
您是否有机会在json_encode()
内输出多个foreach()
?
你应该这样做:
$series = array();
foreach (...) {
$series[] = array(
'name' => $record['name'], // "Hello world"
'data' => $data, // array(1,2,3,4);
);
}
Header('Content-type: application/json');
die(json_encode($series));
如果数据行本身来自另一个周期,则需要类似
的内容$series = array();
foreach (...) {
$data = array();
foreach (...) {
$data[] = $tuple['value'];
}
$series[] = array(
'name' => $record['name'], // "Hello world"
'data' => $data, // array(1,2,3,4);
);
}
Header('Content-type: application/json');
die(json_encode($series));
在调用AJAX之前,您可以正常声明HighCharts图表。它将显示一个空图表,您将拥有一个HighCharts对象。您也可以在AJAX返回功能中执行此操作,但事先准备好图表会更好。
然后你可以调用AJAX来获取一个数据块,仍然需要正确的JSON (没有其他简单的方法),并解码它:
var ch = $('#container').highcharts();
for (blk in jawad) {
ch.addSeries(javad[blk]);
}
但要做到这一点,你的AJAX必须返回一个正确的MIME类型的JSON数组。如果它返回一个字符串,整个设置就不会起作用。