Здравствуйте, необходимо передать массив с сервера(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);
Комментариев нет:
Отправить комментарий