Javascript Highcharts显示数据,但可以';t显示图表
我正在尝试显示动态图表,我们可以按年、月、日改变图表 我已经成功了,我可以根据每次更改X轴,通过Json数组传递的数据也成功了,但是图表没有出来 Javascript:Javascript Highcharts显示数据,但可以';t显示图表,javascript,php,jquery,highcharts,Javascript,Php,Jquery,Highcharts,我正在尝试显示动态图表,我们可以按年、月、日改变图表 我已经成功了,我可以根据每次更改X轴,通过Json数组传递的数据也成功了,但是图表没有出来 Javascript: $.ajax({ url: 'content/getChart.php', type: "POST", async: true, dataType: 'json', data: { type: type,
$.ajax({
url: 'content/getChart.php',
type: "POST",
async: true,
dataType: 'json',
data: {
type: type,
part: part,
year: year_val,
month: month_val,
day: day_val,
days_in_month: days_in_month
},
success: function (data){
var data_array = [];
$.each(data, function(i, val) {
//data_array.push({x: val.time * 1000, y: val.value}); //first result
data_array.push(val.time * 1000, val.value);
});
purchase_chart.series[0].setData(data_array);
console.log(data_array);
}
});
PHP:
结果仍然与旧代码相同。但是,如果我手动放置json数组,则会出现highchart错误#15
而且,如果我像这样(手动)放置数组,图形就会出现
[[1385766000000,0],
[1417302000000,0],
[1448838000000,0],
[1480460400000,12],
[1511996400000,0],
[1543532400000,0],
[1575068400000,0]]
尝试更改
.setData(数据数组)代码>到下一行:
purchase_chart.series[0].setData([data_array], true);
它会自动触发图表的重画操作
另外,下一个选项可能会有所帮助:
// Front-End: change datetime to milliseconds
data_array.push([val.time * 1000, val.value]);
// Back-End [1]: submit time; remove convertation to string
$timemk = mktime(...);
// Back-End [2]: order dates; Highchart will stack when data is not ordered
$resQry .= "ORDER BY `purchase_date`";
// Back-End [3]: remove array bind for values
$purchase_array[$timemk] = array(
'time' => $timemk,
'value' => (int) $row['total_sum']
);
错误是什么?您是否尝试过通过DOM检查它(这可能是一个z索引问题)?我建议打开console。在大多数情况下,Highchart会将错误与问题描述的链接以及解决问题的可能性一起推到错误中。@ghost123,您能分享服务器的响应吗?那么,与手动输入对齐的微小更改(data\u array.push([val.time*1000,val.value]);
)关于这一点,结果是:13857660000,[0],1417302000000,[0],…]代码>所以图表认为时间和值是两个分开的值,所以图形就像一个正弦波(但至少图形显示是的),我想让它像:[138576000000,0],[1417302000000,0],…]代码>明白了。。。从PHP部件中删除数组绑定对不起,数组绑定?
purchase_chart.series[0].setData([data_array], true);
// Front-End: change datetime to milliseconds
data_array.push([val.time * 1000, val.value]);
// Back-End [1]: submit time; remove convertation to string
$timemk = mktime(...);
// Back-End [2]: order dates; Highchart will stack when data is not ordered
$resQry .= "ORDER BY `purchase_date`";
// Back-End [3]: remove array bind for values
$purchase_array[$timemk] = array(
'time' => $timemk,
'value' => (int) $row['total_sum']
);