Как передать строку JSON в строку Highchart?

0

Я работаю с основным строчным графическим строком, и у меня есть строка 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
        });

Может кто-то указать мне на мою ошибку, пожалуйста?

  • 0
    var SData = JSON.stringify(eval("(" + jdata + ")")); должно быть неправильно. Просто должно быть. Что не так с JSON.stringify(jdata) ?
  • 0
    Ох, позвольте мне попробовать это.
Показать ещё 1 комментарий
Теги:
highcharts

1 ответ

0
Лучший ответ

Это работает: Живая демонстрация (нажмите).

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
  • 0
    эй все еще не работает .. и эта демонстрация также не работает .. что ru, проходящий в старшей таблице?
  • 0
    @ Маусами, тебе нужно передать строку или объект?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню