3

JSON でエンコードされた配列を適​​切にフォーマットしようとしています。これが私のPHP MySQLクエリです:

$query = "SELECT date, value1, value2
            FROM testdata
            ORDER BY date ASC";  


         $result = mysql_query($query);
         $myChartData = array();
          while($row = mysql_fetch_assoc($result)){
            $myChartData[] = $row;
                        }

   <script type="text/javascript">
    var chartData = <?php echo json_encode($myChartData); ?>;

コンソールから、オブジェクトは次のように表示されます。

[Object { date="2011-02-23", value1="133034", value2="12105.78"},
 Object { date="2011-02-24", value1="122290", value2="12068.50"},
 Object { date="2011-03-08", value1="453142", value2="12214.38"}]

日付を囲む引用符は残りますが、value1 と value2 の引用符は削除する必要があります。

このすべての独学初心者...助けてくれてありがとう!

4

2 に答える 2

2

初め:

日付を囲む引用符は残りますが、value1 と value2 の引用符は削除する必要があります。

引用符はありません!に含まれるデータの視覚的表現として表示されるもの chartData。この場合、これは 3 つのオブジェクトを持つ配列で、それぞれがstringを含む 3 つのプロパティを持ちます。必要なのは、これらの文字列の一部を数値(整数、浮動小数点)
に変換することです。


正しい方法

DBにデータを正しく保存していないようです。値が数値の場合は、そのようにエンコードされます。

唯一の合理的な解決策は、その端で修正することです。つまり、DB フィールドのデータ型を適切に定義する必要があります。


回避策

なんらかの理由で DB を修正できない場合 (非常に努力する必要があります)、文字列を数値に変換する可能性があります。

JavaScript を初めて使用する場合は、最初にオブジェクトの 操作 [MDN]を読むことをお勧めします。

于 2012-05-02T20:51:54.633 に答える
1

シンプルな JavaScript ソリューション:

function formatChartData(data) {
    for(var i = 0, length = data.length; i < length; i++) {
        data[i].value1 = parseInt(data[i].value1, 10);
        data[i].value2 = parseFloat(data[i].value2);
    }
    return data;
}

var chartData = formatChartData(<?php echo json_encode($myChartData); ?>);
于 2012-05-02T20:50:34.283 に答える