Ajax和Highcharts-显示';装载';在检索到数据之前,请填充图表
我有一些php脚本,通常需要很长时间来检索数据。因此,这会影响highcharts加载时间,因为当前代码只有在检索到所有数据后才会写入图表,因为highcharts代码只有在所有处理完成后才会回显 这会导致页面在检索数据之前基本上不显示任何内容。目标是立即加载highcharts,然后使用php脚本返回的数据写入序列 因此,我希望所有的图形都能立即加载,并在没有数据的情况下显示“加载”,然后在php脚本完成后,使用setData将数据传递给图形系列 我只是想知道是否有人有这样做的例子?我遇到的另一个问题是只能在$(document).ready(function()函数)中设置数据 作品: 中断:Ajax和Highcharts-显示';装载';在检索到数据之前,请填充图表,ajax,highcharts,Ajax,Highcharts,我有一些php脚本,通常需要很长时间来检索数据。因此,这会影响highcharts加载时间,因为当前代码只有在检索到所有数据后才会写入图表,因为highcharts代码只有在所有处理完成后才会回显 这会导致页面在检索数据之前基本上不显示任何内容。目标是立即加载highcharts,然后使用php脚本返回的数据写入序列 因此,我希望所有的图形都能立即加载,并在没有数据的情况下显示“加载”,然后在php脚本完成后,使用setData将数据传递给图形系列 我只是想知道是否有人有这样做的例子?我遇到的另
非常感谢您的帮助。您无法访问范围外的变量、将其移动到该范围内或使变量成为全局变量
- -范围内
- -全局变量
var pipeline_by_sales_stage_highchart; $(document).ready(function () { pipeline_by_sales_stage_highchart = new Highcharts.Chart({ }); ... // somewhere: pipeline_by_sales_stage_highchart.series[0].setData(data);
pipeline_by_sales_stage_highchart.setLoading("Loading...")
检查这把小提琴:在这里查看我的答案:
总结: 使用空序列初始化图表,然后在循环中使用
addSeries
更新图表,如下所示:
this.dataFromApi.forEach(function(serie) { // for each row of data, add a series
this.chart.addSeries(serie, false); // false is to prevent redrawing
}.bind(this));
this.chart.redraw(); // manually redraw
this.chart.hideLoading(); // stop loading if showLoading() was call before
jsFiddle here:感谢您的回复Pawel。我尝试了您的全局变量示例,但是它在jsFiddle中似乎工作得很好,但是在我的机器上本地尝试时,对象超出了范围:“错误:类型错误:pipeline\u by\u sales\u stage\u highchart未定义”可能您有两次$().ready?确保变量是全局变量。例如,在Chrome open console中,键入pipeline_…highchart并查看是否定义了。JSFIDLE不包含setLoading()