Страницы

Поиск по вопросам

понедельник, 15 июля 2019 г.

Помогите правильно построить график Google Chart + nodejs

Здравствуйте, необходимо передать массив с сервера(nodejs) на клиент, чтобы потом по нему строить график. Я передаю массив, но на клиенте пишет, что это не массив. Где ошибка в коде?
Сервер:
app.post('/averageTimeInQueue', function(req, res, next) { var data = [ [2012, 1000, 400, 232], [2005, 1170, 460, 421], [2006, 660, 1120, 4324] ]; res.send(data); });
Клиент:
google.charts.load('current', {'packages':['line']}); google.charts.setOnLoadCallback(drawChart);
function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('number', 'Day'); data.addColumn('number', 'Guardians of the Galaxy'); data.addColumn('number', 'The Avengers'); data.addColumn('number', 'Transformers: Age of Extinction');
data.addRows(averageTimeInQueue); var options = { chart: { title: 'Box Office Earnings in First Two Weeks of Opening', subtitle: 'in millions of dollars (USD)' }, width: 600, height: 350, axes: { x: { 0: {side: 'top'} } } };
var chart = new google.charts.Line(document.getElementById('chart_div2'));
chart.draw(data, options); }
function averageTimeInQueue(){ var jsonData = $.ajax({ url: "/averageTimeInQueue", async: false, type: 'POST' }).responseText; return jsonData; }


Ответ

Конечно не массив, вы же его как текст отправляете. Сериализируйте его в json
на сервере res.send(JSON.stringify(data));
на клиенте data.addRows(averageTimeInQueue()) вместо data.addRows(averageTimeInQueue) и
var jsonData = $.ajax({ url: "/averageTimeInQueue", dataType: "json", async: false, type: 'POST' }).responseText; return JSON.parse(jsonData);

Комментариев нет:

Отправить комментарий