Я работаю с основным строчным графическим строком, и у меня есть строка json, передаваемая php.
Я хочу передать эту строку в highchart, но она не работает для меня. Я не знаю, где я ошибаюсь.
Мой код выглядит следующим образом:
// data['SeriesData'] = [{"name":"Support Help Desk","data":[0,0,0,3060,675,0,450,540,112.5,0,45,45]},{"name":"Business Activity","data":[0,0,0,0,0,0,0,0,0,0,0,0]},{"name":"Maintenance Tasks","data":[0,0,0,0,0,0,0,0,0,0,0,0]},{"name":"Development","data":[0,0,0,0,0,0,0,832.5,0,0,0,0]},{"name":"Consulting Services","data":[0,0,0,1237.5,3802.5,3166.5,2801,585,562.5,0,157.5,1822.5]}]
var jdata = data['SeriesData'];
var SData = JSON.stringify(eval("(" + jdata + ")"));
$('#chart').highcharts({
title: {
text: 'Line Chart',
x: -20 //center
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
yAxis: {
title: {
text: 'Total Minutes'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
valueSuffix: 'min'
},
series: SData
});
Может кто-то указать мне на мою ошибку, пожалуйста?
Это работает: Живая демонстрация (нажмите).
var data = {};
data.seriesData = [
{"name":"Support Help Desk","data":[0,0,0,3060,675,0,450,540,112.5,0,45,45]},
{"name":"Business Activity","data":[0,0,0,0,0,0,0,0,0,0,0,0]},
{"name":"Maintenance Tasks","data":[0,0,0,0,0,0,0,0,0,0,0,0]},
{"name":"Development","data":[0,0,0,0,0,0,0,832.5,0,0,0,0]},
{"name":"Consulting Services","data":[0,0,0,1237.5,3802.5,3166.5,2801,585,562.5,0,157.5,1822.5]}
];
var sData = JSON.stringify(data.seriesData);
console.log(sData);
Обратите внимание, что я изменил его на использование точечной нотации и стандартного наименования camelCase. Здесь демонстрация вашего исходного кода с правильным изменением - работает в любом случае: http://jsbin.com/UQupAvI/2/edit
eval()
почти никогда не является ответом. Я не знаю, что заставило вас использовать его, но вам это не нужно. У вас уже был объект JSON. Если вам нужна строка, вам просто нужен JSON.stringify()
. Если у вас есть строка и нужен объект, вы используете JSON.parse()
.
Я предполагаю, что вы приблизились ко всему этому неловко - похоже, что вы действительно хотите превратить строку с сервера в реальный объект: Live demo (нажмите).
var data = {};
data.seriesData = '[{"name":"Support Help Desk","data":[0,0,0,3060,675,0,450,540,112.5,0,45,45]},{"name":"Business Activity","data":[0,0,0,0,0,0,0,0,0,0,0,0]},{"name":"Maintenance Tasks","data":[0,0,0,0,0,0,0,0,0,0,0,0]},{"name":"Development","data":[0,0,0,0,0,0,0,832.5,0,0,0,0]},{"name":"Consulting Services","data":[0,0,0,1237.5,3802.5,3166.5,2801,585,562.5,0,157.5,1822.5]}]';
var sData = JSON.parse(data.seriesData);
console.log(sData); //now an object
var SData = JSON.stringify(eval("(" + jdata + ")"));
должно быть неправильно. Просто должно быть. Что не так сJSON.stringify(jdata)
?