5

jQueryを使用してxmlソースからhighchartシリーズにデータを入力しようとしています。XMLファイルはRRDToolからのエクスポートであり、次の形式になっています。

<data>
<row><t>1347559200</t><v>2.1600000000e+01</v></row>
<row><t>1347562800</t><v>2.1504694630e+01</v></row>
<row><t>1347566400</t><v>2.1278633024e+01</v></row>
.
.
.
</data>

私のアプローチは、jQueryを使用してデータをロードし、シリーズをチャートにプッシュすることでした。

$.ajax({
      type: "GET",
      url: "data/data.xml",
      dataType: "xml",
      success: function(xml) {
        var series = {  data: []
                    };

        $(xml).find("row").each(function()
        {
            var t = parseInt($(this).find("t").text())*1000
            var v = parseFloat($(this).find("v").text())
            series.data.push([t,v]);
        });
        options.series.push(series);
      }
  });

次のエラーが発生します。

予期しない値NaN解析y属性

コードを示すためにJSFiddleを作成しました:http://jsfiddle.net/GN56f/

4

2 に答える 2

2

クロスドメインの問題は別として、エラーはプロットオプションに既存の空の系列があることが原因です。オプションの最初のシリーズは次のように設定する必要があります。

series: []

それ以外の:

シリーズ:[{名前:'温度'、データ:[]}]

の後続の呼び出しoptions.series.push(series);は、空のシリーズを変更せずに新しいシリーズを追加するだけです。

于 2012-09-14T21:12:47.940 に答える
2

問題:

  • varあなたは宣言する前にoptions忘れていましたchart
  • ;終わったら忘れたoptions
  • optionsに渡す前にログに記録しようとしましたHighchartsか?あなたは以下を渡していますseries

それは期待される結果ですか?違うと思う。

series: [{
    name: 'Temperature',
    data: []
}, {
    data: [// data from xml]
}]
  • リクエストを完了する前にチャートを作成しているため、options.series.data.push動作しません.setDataを使用して動的に更新する必要がありますが、問題があります.リクエストにかかる時間がわからないので、チャートを作成することをお勧めします.の中にsuccess

以下を試してください。

success: function(xml) {
    $('row', xml).each(function() {
        options.series.data.push([t,v]);
    });
    //@todo: declare chart as global before the ajax function
    chart = new Highcharts.Chart(options);
}
于 2012-09-15T00:40:44.987 に答える