javascript - 如何以可绘图格式输出 PHP 结果

标签 javascript php mysql d3.js plotly

我正在尝试使用https://plot.ly/javascript/用于绘制 MySQL 数据库的 PHP 输出。我需要将输出格式化为这样 -

var data = [
  {
    x: ['giraffes', 'orangutans', 'monkeys'],
    y: [20, 14, 23],
    type: 'bar'
  }
];

这是我目前用来获取输出的代码 -

#PHP
$x = array();
$y = array();

while($query_result = $result->fetch_assoc()) {
    $x[] = $query_result['Animal'];
    $y[] = $query_result['Count'];
}

print_r($y);


#Javascript
$.get('../assets/php/Animals.php', function(data) {
    Plotly.newPlot('AnimalChart', data);
});

但它返回的数据是这样的 -

Array
(
    [0] => 20
    [1] => 14
    [2] => 23
)

我也尝试过像这样json_encode -

$rows = array();

while($query_result = $result->fetch_assoc()) {
    $rows[] = $query_result;
}

echo json_encode($rows);

但是输出是这样的,这与绘图预期的格式不匹配 -

[{"Animal":"giraffes","Count":"20"},
 {"Animal":"orangutans","Count":"14"},
 {"Animal":"monkeys","Count":"23"}]

在这两种情况下,Plot.ly都会返回错误,这就是为什么我认为它需要像第一个示例一样进行格式化。

Uncaught TypeError: Cannot read property 'selectAll' of undefined

最佳答案

您的数据不仅仅是$x,您需要如下内容:

$x = array();
$y = array();

while($query_result = $result->fetch_assoc()) {
    $x[] = $query_result['Animal'];
    $y[] = $query_result['Count'];
}

$data = [ [
   "x" => $x,
   "y" => $y,
   "type" => "bar"  
] ]; 

echo json_encode($data);

你的 JS 还需要使用正确的 dataType:

$.get('../assets/php/Animals.php', null, function(data) {
    Plotly.newPlot('AnimalChart', data);
}, "json");

关于javascript - 如何以可绘图格式输出 PHP 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36625905/

相关文章:

MySQL 将 COUNT 排序到不同的列中

javascript - 使用嵌套的 JSON 对象给我控制台错误

php - mysql中的float、smallint、decimal

php - 显示文件夹中的图像(幻灯片)

php - 保护 php api 以在 android 应用程序中使用

mysql - 这是什么 MySQL 查询?

mysql - 如何正确处理 node-mysql 连接池中的连接持久性事物

javascript - 如何创建一个包含多个 .click() 函数的 jQuery 函数?

javascript - 在多个 $http 调用上显示微调器

javascript - 切换类或可见性