0

ユーザーが定義できる複数のグラフを含むページを作成しています。

グラフの詳細が変更されると、サーバーへのAjax呼び出しを介して保存され、グラフを再作成する必要があります。

ブラウザに戻るJSONを生成して、サーバー側でPHPでグラフを作成しようとしています。

これまでのところ、私の問題は、サーバーからjsonデータを取得したらグラフをレンダリングすることです。

問題は、jsonに系列データが含まれていることのようです。

返されるJSONは次のようになります。

{"chart":{   "type":["column"]},
   "credits":false,
   "legend":{"enabled":false},
   "title":{"text":"Turnover by Product","align":"left","y":7,
          "style":{"fontSize":"10px"}},
   "xAxis":{"title":{"text":"Total Sales"}},
   "series":[
         {"name":"BA","data":[22375004.21]},
         {"name":"FR","data":[82542490.9]},
         {"name":"GA","data":[531139.77]},
         {"name":"MS","data":[112142]},
         {"name":"ON","data":[23464497.44]},
         {"name":"PO","data":[74623237.35]},
         {"name":"TO","data":[25845184.81]},
         {"name":"VG","data":[51496496.25]},
         {"name":"WM","data":[6849331.4]}]}
}

私が試してみると:

var cgraphdata = $.ajax({
   url: "/graphs/data/format/json",
   global: false,
   type: "POST",
   dataType: "json",
   data: {type:graphtypeID},
   async: false,
   success: function(data) {
        }
}).responseText; // json returned in cgraphdata
var rgResult = JSON.parse(cgraphdata); // convert to javascript object
// currentGraph = id of container div for current graph
rgResult.chart.renderTo = currentGraph;  // set render target
newGraph = new Highcharts.Chart(rgResult);  // create chart

これにより、Highchartsエラー14が発生します。データを除外すると、タイトルと軸が記載された空白のグラフが表示されます。

これは、グラフの作成後にデータを個別にロードする必要があることを意味しますか(上の最後の行)?

編集:各データ系列に渡される値が数値であることを確認しました-エラー14は、テキストがデータ値として渡されることを示唆しています。

リチャード

4

1 に答える 1

0

AJAX は非同期であるため、成功ハンドラーでグラフの更新を行う必要があります。また、適切なヘッダーを使用してデータを JSON として提供する限り、データはハンドラーで既に解析されているはずであり、dataType を指定する必要はありません。

それで、これらの線に沿った何か。

$.ajax({
   url: "/graphs/data/format/json",
   type: "POST",
   data: {type:graphtypeID},
   success: function(result)
   {
       new Highcharts.Chart(result);
   }
});

(もちろん、ハンドラーで正しいことを行う必要があります。それがあなたの場合にどうなるかわかりませんので、要約しました:)

于 2013-03-07T09:56:42.040 に答える