2

jqplot プラグイン ( http://www.jqplot.com/tests/pie-donut-charts.php ) を使用して円グラフを作成しようとしていますが、 $get 関数から結果を取得するのに問題がありますjqplot 関数が使用可能なデータとして受け入れるもの。

上記の jqplot リンクで、円グラフを表示するためのデータ変数を作成する方法を確認できます。

現在、文字列を返す $.get 関数は次のとおりです。

//data is returned as a string: 'some_field_name',10,'some_other_field,33 etc
$.get("notesajax.php", {month:monthFilter, area:areaFilter}, function(data) {
    var arr = data.split(",");
    var results = [];
    for (var i = 0; i < arr.length; i++) {
        mini = [];
        mini[arr[i]] = "'"+arr[i]+"',"+arr[i+1];
        results.push(mini);
        i++;
    }

簡単に参照できるように、ここに jqplot 関数を示します。これには、jqplot がデータを受信する方法を示すために、最初に定義された「データ」変数が含まれています。

//this variable is just for illustrative purposes
var data = [
    ['Heavy Industry', 12],['Retail', 9], ['Light Industry', 14], 
    ['Out of home', 16],['Commuting', 7], ['Orientation', 9]
];

var plot1 = jQuery.jqplot ('chartdiv', [results], 
    { 
        seriesDefaults: 
        {
            // Make this a pie chart.
            renderer: jQuery.jqplot.PieRenderer, 
            rendererOptions: {
                // Put data labels on the pie slices.
                // By default, labels show the percentage of the slice.
                showDataLabels: true
            }
        }, 
        legend: { show:true, location: 'e' }
    }
);

ただし、これまでのところ、 $get 返されたデータを jqplot 関数が受け入れる形式にすることはできません。

4

3 に答える 3

1
var field, value, data = [], str = "'some_field_name',10,'some_other_field,33";
var arr = str.split(',');
// just add 2 to each iteration to get every second item (last argument is i += 2):
for (var i = 0; i < arr.length; i += 2) {
  field = arr[i].replace(/'/g, ""); // replace ', because otherwise your string will be "'some_field_name'"
  value = parseInt(arr[i+1], 10); // parseInt because you want numbers, but got a string
  data.push([field, value]); // push into your data-array an array with your field and value
}

ここのjsfiddle:http://jsfiddle.net/wLxyZ/

于 2013-06-11T10:16:58.917 に答える
0

間違った配列を生成しています。サーバーからJSONオブジェクトを直接送信する必要があります。これは推奨され、簡単です。または、解析スクリプトを正常にする必要があります。

$.get("notesajax.php", {month:monthFilter, area:areaFilter}, function(data) {
var arr = data.split(",");
var results = [];
for (var i = 0; i < arr.length; i++) {
    var mini = new Array();
    mini.push(arr[i]);
    mini.push(arr[i+1]);
    results.push(mini);
}
于 2013-06-11T10:18:17.233 に答える
0

私はあなたのコードで遊んで、次の解決策にたどり着きました。元のコードには、特にミニアレイの構築方法にいくつかの問題がありました

var arr = ['some_field_name',10,'some_other_field',33];
var results = [];
for (var i = 0; i < arr.length; i+=2) {        
    var mini = ["'"+arr[i]+"'",+arr[i+1]];
    results.push(mini);
}
alert(results[0][0]);
于 2013-06-11T10:21:13.330 に答える