В версии, которая работает, данные - это Array из Arrays of String;
data: [["Arecleoch",21], ...
(обратите внимание, что перед первой скобкой нет противоположных кавычек).
В версии, которая не работает, это строка, представляющая массив.
Я подозреваю, что API диаграмм ожидает только Array (в данном случае это массив массивов).
Так что это зависит от того, что это делает:
$.getJSON(url, null, function(data) {
// What is the type of data here ?
От вашего контроллера и дисплея вашего отладчика я думаю, что данные сами по себе являются массивом массивов. Вы должны напрямую передать его в API диаграмм (без функции sData = data.toString ()), которая фактически преобразует массив ['a', 'b', 'c'] в строку, представляющую массив, например "[' a ',' b ',' c '] ");
// Callback parameter renamed to show it is an Array of Arrays
$.getJSON(url, null, function(aaData) {
// ... skipped ...
series: [{
type: 'pie',
name: 'Incidents by Site',
data: aaData /* Use the Array itself */
}]
Редактировать: мое решение будет работать только в том случае, если на выходе контроллера будет что-то вроде:
{
data : [[ "Arecleoch", 21], ["Whatever", 42]]
}
Однако кажется, что ваш контроллер возвращает что-то вроде
{
data : "[['Arecleoch', 21],['Whatever', 42]]"
}
(Может быть, без части {data:}, я не знаю, нужен ли вам элемент верхнего уровня или вы ошибочно возвращаете массив в JSON)
Это тот случай? Если это так, то вам придется либо:
- сменить контроллер
- парсинг строки на стороне клиента, в javascript