2013-09-09 12 views
1

Я пытаюсь передать диаграмму диаграмм с входными данными, но сталкиваюсь с одной проблемой. Я получаю данные через JSON, а затем добавить их в данных так же, как это:Javascript - Highcharts - массив входных данных массивов

function getGraphValues() { 
period.deviceID = user.deviceID; 
var postData = JSON.stringify(period); 
var postArray = {json:postData}; 
$.ajax({ 
    type: 'POST', 
    url: "getData.php", 
    data: postArray, 
    success: function(data) 
    { 
     data1 = JSON.parse(data); 
     if (data1.status == "ok") 
     { 
     var stats = data1.metrics.split("/"); 
     $(function() { 
      $('#container').highcharts(
     { 
      chart: {type: 'bubble',zoomType: 'xy'}, 
      title: {text: 'Highcharts Bubbles'}, 
      series: [{data: [getData(stats)]}] 
     });}); 
     } 
      else 
      { 
      alert("error"); 
      }} 
});} 


function getData(stats) 
{ 
var data; 
var stats; 
for (var j = 0; j < stats.length; j++) 
{ 
data += "[" + j + "," + stats[j] + "," + stats[j]*8 + "],"; 
} 
stats = data.split(","); 
return stats; 
} 

Так, в некотором смысле, как это сделать я получить статистику в таком виде: [47,47,21], [20 , 12,4], [6,76,91], [38,30,60], [57,98,64], [61,17,80], [83,60,13], [67,78 , 75] хранится в строковой переменной. Моя проблема в том, что я не могу передать эту строку для ввода данных, поскольку она ждет числа, а не строки. Как я могу передать атрибут данных по-разному? Как создать массив массива в функции getData, если это необходимо? Спасибо.

+0

Какова средняя из моей проблемы заключается в том, что я не могу передать эту строку для ввода данных, поскольку она ждет числа, а не строки? – developerCK

ответ

1

Если я правильно прочитал ваш вопрос, вы хотите, чтобы getData возвратил 2-мерный массив. Я считаю, что следующая функция делает то, что вам нужно:

function getData(stats) { 
    var result = []; 
    for (var j = 0; j < stats.length; j++) { 
     var data = [j, stats[j], stats[j]*8]; 
     result.push(data); 
    } 
    return result; 
} 

А вот jsFiddle demo.

Вот еще один пример, который использует функцию GetData определенную выше внутри Highcharts пузырьковой диаграмме:

$(function() { 
    function getData(stats) { 
     var result = []; 
     for (var j = 0; j < stats.length; j++) { 
      var data = [j, stats[j], stats[j]*8]; 
      result.push(data); 
     } 
     console.debug(result); 
     return result; 
    } 

    $('#container').highcharts({ 
     chart: {type: 'bubble',zoomType: 'xy'}, 
     title: {text: 'Highcharts Bubbles'}, 
     series: [{data: getData([1,2,3])}] 
    }); 
}); 

а соответствующий jsFiddle demo.

+0

Спасибо за быстрый ответ. Тем не менее, я ничего не могу сделать. Я предупреждаю результат, прежде чем возвращать его, и увидел, что это на самом деле одномерный массив - или я ошибаюсь? Я считаю, что возвращаемые данные должны быть в форме: {данные: [[47,47,21], [20,12,4], [6,76,91], [38,30,60] , [57,98,64]]} , в то время как у меня есть это, как указано в результате возврата: {данные: [47,47,21,20,12,4,6,76,91,38,30, 60,57,98,64]} Не могли бы вы помочь мне? – Dim

+0

Привет. Если вы посмотрите на [jsFiddle] (http://jsfiddle.net/WDbWq/), который я создал, откройте консоль javascript и запустите jsFiddle, вы увидите, что он возвращает 2-мерный массив. Вы должны сделать 'console.debug' (вместо' alert') результатов 'getData' и посмотреть, действительно ли это 2-мерный массив. – zigdawgydawg

+0

Я добавил еще один пример/jsFiddle к моему ответу, показывающий, как функция 'getData' работает с высокими диаграммами. Я думаю, что у вас есть дополнительные '[' и ']' до и после вызова 'getData'. – zigdawgydawg

Смежные вопросы