4

データを取得するのに本質的に長い時間がかかるphpスクリプトがいくつかあります。結果として、これはハイチャートの読み込み時間に影響します。ハイチャートコードはすべての処理が完了した後にのみエコーされるため、現在のコードはすべてのデータが取得されたときにのみチャートを書き込みます。

これにより、データが取得されるまで、ページには基本的に何も表示されません。目標は、highchartsをすぐにロードしてから、phpスクリプトによって返されたデータを使用してシリーズに書き込むことです。

したがって、私が探しているのは、すべてのグラフをすぐにロードし、データなしで「ロード中」を表示し、phpスクリプトが完了したら、setDataを使用してデータをグラフシリーズに渡すことです。

誰かがこれが行われている例があったかどうか疑問に思っていますか?私が抱えているもう1つの問題は、$(document).ready(function()関数内でのみデータを設定できることです。

動作します:http: //preview.tinyurl.com/b724bxo

休憩: http: //preview.tinyurl.com/a7mqqkc

多くの感謝とどんな助けも大いに感謝されるでしょう。

4

3 に答える 3

6

まだこれを探しているかどうかはわかりませんが、「読み込み中」のメッセージを表示するには、チャートで「setLoading()」メソッドを使用できます。

pipeline_by_sales_stage_highchart.setLoading("Loading...")

このフィドルを確認してください:http://jsfiddle.net/QSfEJ/

于 2013-02-21T19:24:14.463 に答える
3

スコープ外の変数にアクセスしたり、そのスコープに移動したり、変数をグローバルにすることはできません。

  • http://jsfiddle.net/M2jv7/33/-スコープ内

  • http://jsfiddle.net/M2jv7/34/-グローバル変数

    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);
    
于 2013-02-11T16:42:23.613 に答える
1

ここで私の答えを参照してください:javascriptのHighchartシリーズの更新


概要 :

空の系列でチャートを初期化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:https ://jsfiddle.net/qyh81spb/

于 2016-09-06T16:23:00.517 に答える