Я работаю над проектом, в котором я использую API-интерфейс Google Charting, и я хочу заполнить диаграмму с помощью json для построения таблицы данных.Создание массива и форматирование JSON для API Google Charting
В качестве теста я пытаюсь создать простой массив до того, как попытаюсь сделать это с динамическими данными из базы данных, но у меня возникла проблема с получением json в правильном формате.
В документации Google это говорит содержание JSON должно быть в следующем:
{
"cols": [
{"id":"","label":"Topping","pattern":"","type":"string"},
{"id":"","label":"Slices","pattern":"","type":"number"}
],
"rows": [
{"c":[{"v":"Mushrooms","f":null},{"v":3,"f":null}]},
{"c":[{"v":"Onions","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Olives","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Zucchini","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Pepperoni","f":null},{"v":2,"f":null}]}
]
}
Я вызываю функцию, которая возвращает код JSON.
Ниже, как функция вызывается
print json_encode(test());
и функция тест
function test()
{
$array = array();
$array['cols'][] = "20-01-13";
$array['cols'][] = "21-01-13";
$array['cols'][] = "22-01-13";
$array['rows'][] = 22;
$array['rows'][] = 26;
$array['rows'][] = 12;
return $array;
}
Код JavaScript, который генерирует график выглядит следующим образом
<script>
google.load('visualization', '1', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);
function drawChart() {
var jsonData = $.ajax({
url: "loadGraph.php",
dataType:"json",
async: false
}).responseText;
var data = new google.visualization.DataTable(jsonData);
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.PieChart(document.getElementById('lineGraph'));
chart.draw(data, {width: 400, height: 240});
}
</script>
Когда я выводящая ее json возвращается в следующем формате
{"cols":["20-01-13","21-01-13","22-01-13"],"rows":[22,26,12]}
и если я пытаюсь использовать это для datasetfor диаграммы Google я получаю следующее сообщение
Cannot read property of '1' of undefined
Я только здание простой диаграммы линии, которая будет содержать только дату вдоль оси х и сколько раз в это время произошло что-то по оси y.
Как скомпоновать массив, чтобы получить его в правильном формате для диаграммы api google.
Спасибо за любую помощь, которую вы можете предоставить.
Нет ничего явно неправильного в данных, как вы его показали. Проблема может заключаться в том, как вы ее используете, поэтому вы должны предоставить более полный пример. Настройте jsfiddle, который демонстрирует проблему. – dlaliberte
@dlaliberte Я добавил дополнительную информацию – Boardy
json, возвращаемый вашим PHP-кодом, явно не совпадает с тем, что вы ожидаете вывести, и тем, что ожидает график в качестве данных. Таким образом, это проблема с вашей функцией php test(), которая генерирует неправильную структуру для начала. Ошибка из графиков Google довольно запутанна, но не стоит. Извините, я не могу помочь вам с PHP-кодом. – dlaliberte