0

私は最近、本当に印象的なHighchardsをいじり始めましたが、jQuery Ajax リクエストから返されたデータでグラフを更新するのに問題があります。

私のコードは次のとおりです。

$.ajax({
type: "POST",
url: "scripts/ajax_testDetails.php",
async: true,
cache: false,
dataType: 'json',
timeout: 30000,
data: "TestID=" + TestID,
success: function(data) {

if(data.Status == "Success"){

    document.title = data.FirstName + " " + data.LastName;  // This works fine
    $('input[name=TestDate]').val(data.TestDateFormat); // This works fine too

    console.log("Accuracy2: " + data.Accuracy2);        // This works fine
    console.log("TPR2: " + data.TPR2);          // This works fine too

    var Accur1 = 6;                 // Used to debug, works fine in chart.series[0].setData()
    var NewStuff = new Array(25,15,8,18,5);     // Used to debug, works fine in chart.series[3].setData()
    var Accuracy3 = data.Accuracy2          // Used to debug, returns 'undefined' when used in chart.series[0].setData()

    var chart = $('#HeartGraph').highcharts();

    // Anything that use the data object here shows as 'undefined' in yData and doesn't change the graph
    chart.series[0].setData([randomBetween(1,10),Accur1,data.Accuracy2,Accuracy3,randomBetween(1,10)],false);
    chart.series[3].setData([NewStuff[0],NewStuff[1],randomBetween(1,10),data.TPR2,data.TPR3],false);

    chart.redraw();                 // When redraws, values change except for the ones that use the data. object!

}

});

ご覧のとおり、success データ オブジェクトをいじって問題がないことを確認しましたが、chart.series[].setData() 関数でデータを使用しようとすると機能しません。ただし、テスト値は正常に機能しているようです。本当に奇妙で非常に紛らわしいです!

どんなアドバイスでも大歓迎です。

ダン

4

1 に答える 1

1

1 つの可能性は、json データに数値ではなく文字列が含まれていることです。これにより、データ系列で問題が発生する可能性があります。サーバーまたは次のような JavaScript で数値に変換してみてください。

chart.series[0].setData([
   randomBetween(1,10),
   Accur1 * 1,
   data.Accuracy2 * 1,
   Accuracy3 * 1,
   randomBetween(1,10)],false);

「*1」は文字列値を数値に変換します。

于 2013-03-28T11:54:00.040 に答える