0

私は次のものを持っています:

plot($('#pageviews'), 'line', {
  labels: ['1', '2', '3', '4', '5', '6', '7', '8'],
  datasets: [
    { 
      fillColor: rgba("#404040", 0.25), 
      data: [20, 24, 28, 30, 26, 18, 16, 10] 
    }
  ]
});

そして、JSON を返す "/data/stats/pageviews" という URL があります。

[ { "ラベル": "1", "データ": 2 }, { "ラベル": "2", "データ": 20 }, { "ラベル": "4", "データ": 20 } ]

私は次のことを試しました:

$.ajax({
  url: '/data/stats/pageviews',
  dataType: 'json'
}).success(function (data) {

  plot($('#pageviews'), 'line', {
    labels: data.Labels,
    datasets: [
      { 
        fillColor: rgba("#404040", 0.25), 
        data: data.Data
      }
    ]
  });

});

これは機能していません...問題は、データの使用方法にあると思います。それは...ですか?

ありがとう、ミゲル

4

2 に答える 2

2

問題は、 usingがデータ内data.Labelsのすべてのキーの値をフェッチしないことですLabel。これは、それらが配列内の個々の項目に格納されているためです。したがって、 の各配列アイテムをループする必要があります。それぞれのアイテムは、とdataの両方の値にアクセスできるオブジェクトです。このコードのデモは、このフィドルで利用できます: http://jsfiddle.net/teddyrised/hHE2r/3/LabelsData

var data = [ { "Labels": "1", "Data": 2 }, { "Labels": "2", "Data": 20 }, { "Labels": "4", "Data": 20 } ];

// Declare new arrays
var dataLabels = [],
    dataData = [];

// Loop through returned data
$.each(data, function(key, value){
    dataLabels.push(this.Labels);
    dataData.push(this.Data);
});

console.log(dataLabels);
console.log(dataData);

したがって、これを AJAX 呼び出しに統合するために、次のことができます。

$.ajax({
    url: '/data/stats/pageviews',
    dataType: 'json'
}).success(function (data) {

    // Declare new arrays
    var dataLabels = [],
        dataData = [];

    // Loop through returned data
    $.each(data, function(key, value){
        dataLabels.push(this.Labels);
        dataData.push(this.Data);
    });    

    // Draw lot
    plot($('#pageviews'), 'line', {
        labels: dataLabels,
        datasets: [{
            fillColor: rgba("#404040", 0.25),
            data: dataData
        }]
    });

});
于 2013-11-09T23:08:02.453 に答える
0

ajax リクエストを呼び出して、次のようにリクエストが返す内容に基づいてプロット パラメータを設定できます。

 $.ajax({
    url:"/data/stats/pageviews",
    dataType:'json'
    success:function(obj){
        plot($('#pageviews'), 'line', {
            labels: obj.Labels,
            datasets: [
             { 
                fillColor: rgba("#404040", 0.25), 
                data: obj.Data
             }
            ]
        });
    }
  });

返される JSON オブジェクトは、次の形式である必要があります。

{"Labels": ["1", "2", "3", "4", "5", "6", "7", "8"],
 "Data": [20, 24, 28, 30, 26, 18, 16, 10]
} 
于 2013-11-09T22:27:45.447 に答える