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. 在这种情况下,它是一个包含三个对象的数组,每个对象都有三个包含字符串的属性。
您想要的是将其中一些字符串转换为数字(整数、浮点)。


正确的方法

看来您没有将数据正确存储在数据库中。如果值是数字,它们将被编码。

唯一合理的解决方案是在此结束时修复它。这意味着您必须正确定义数据库字段的数据类型。


解决方法

如果由于某种原因您无法修复数据库(您应该非常努力),您可以将字符串转换为数字

如果您是 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 回答