2015-11-19 2 views
0

Я новичок в C3 (и .js), но очень впечатлен и взволнован тем, что он может сделать.C3: чтение JSON, сгенерированное с PHP

Я использую PHP, чтобы тянуть набор данных из MySQL в учебнике по: http://www.d3noob.org/2013/02/using-mysql-database-as-source-of-data.html

Я могу успешно создать файл JSON в PHP, используя следующий код:

$myquery = "SELECT `date`, `close` FROM `data2`"; 
$query = mysql_query($myquery); 

if (! $query) { 
    echo mysql_error(); 
    die; 
} 

$data = array(); 

for ($x = 0; $x < mysql_num_rows($query); $x++) { 
    $data[] = mysql_fetch_assoc($query); 
} 

$output=json_encode($data); 
echo $output; 
?> 

Это создает следующие JSON:

[{"date":"1-May-12","close":"58.13"},{"date":"30-Apr-12","close":"53.98"},{"date":"27-Apr-12","close":"67.00"},{"date":"26-Apr-12","close":"89.70"},{"date":"25-Apr-12","close":"99.00"},{"date":"24-Apr-12","close":"130.28"},{"date":"23-Apr-12","close":"166.70"},{"date":"20-Apr-12","close":"234.98"},{"date":"19-Apr-12","close":"345.44"},{"date":"18-Apr-12","close":"443.34"},{"date":"17-Apr-12","close":"543.70"},{"date":"16-Apr-12","close":"580.13"},{"date":"13-Apr-12","close":"605.23"},{"date":"12-Apr-12","close":"622.77"},{"date":"11-Apr-12","close":"626.20"},{"date":"10-Apr-12","close":"628.44"},{"date":"9-Apr-12","close":"636.23"},{"date":"5-Apr-12","close":"633.68"},{"date":"4-Apr-12","close":"624.31"},{"date":"3-Apr-12","close":"629.32"},{"date":"2-Apr-12","close":"618.63"},{"date":"30-Mar-12","close":"599.55"},{"date":"29-Mar-12","close":"609.86"},{"date":"28-Mar-12","close":"617.62"},{"date":"27-Mar-12","close":"614.48"},{"date":"26-Mar-12","close":"606.98"}] 

Моя проблема в том, что код c3.js, который у меня есть, не отображает диаграмму. Не уверен, что это потому, что JSON отформатирован правильно.

Это код, я использую

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>title</title> 

<!-- Here are all the javascripts and css that you need, you can download them or linked them like here --> 
<script type="text/javascript" src="d3.js"></script> 
<script type="text/javascript" src="c3.js"></script> 
<link href="c3.css" rel="stylesheet" type="text/css"> 

</head> 
<body> 
<div id="chart"></div> 
<script> 

var obj2 = ['<?php echo $output; ?>']; 


var chart = c3.generate({ 
     bindto: '#chart', 
     data: { 
      json: [ 
      obj2 
      ], // or URL 
     keys: { 
     //    x: 'name', // it's possible to specify 'x' when category axis 
     value: ['close '], 
     } 
     }, 
axis: { 
     x: { 
     //  type: 'category' 
     } 
    } 
    }); 
</script> 

</body> 
</html> 

Это результат я получаю в диаграмме: c3 пустая диаграмма - http://imgur.com/SHPmVOb

Любая помощь будет с благодарностью оценили, как я чувствую, как это могло бы быть большим блокировщиком для обучения C3.

Благодаря

ответ

0

Проблема может быть, что json_encode возвращает JSON в виде строки. Таким образом, вы не получаете JSON. USe JSON.parse (ваши данные из json_encode); чтобы получить объект JS JSON и перейти оттуда.

+0

Благодарим за это. Ваш ответ поможет мне решить эту проблему. Я предполагал, что это не JSON, а строка. Оказалось, что формат даты с моего SQL был в формате «dd-mmm-yy». Решение заключалось в том, чтобы изменить дату на «yyyy-mm-dd» на стороне SQL. Работает сейчас. – Predica

Смежные вопросы