解析后Javascript JSON无法正常工作

时间:2015-05-20 06:11:17

标签: javascript php json

我需要借助PHP从Mysql数据库中获取图形。我从(http://canvasjs.com)得到了很好的申请。所以,我在PHP SESSION的变量元素中创建了自己的JSON格式。它在调试时没有错误,但没有结果。

第34-37行给出了图表,如果我不评论它们。评论它们并替换为我自己的JSON,它是可变的元素,并没有给我图表。给我空白页。

我是JSON的新手。帮助我解决这个问题。

以下是我的代码。

var array = <?php echo json_encode($_SESSION["r_array"]); ?>;

var count = 0;
var element = '';
var title = 'Malware lab, TCRC, CTA';

for( var i in array) {

    if ( count == 0 ) {
        element += ‘{y: ‘+array[i]+’,’+’ indexLabel: “‘+i+'”}';
    } else {
       element += ‘, {y: ‘+array[i]+’,’+’ indexLabel: “‘+i+'”}';
    }
    count++;
 }

 var chart = new CanvasJS.Chart(“chartContainer”,
 {
     title: {
        text: title
     },
 data: [
        { type: type,

            dataPoints: [
                   /*
                   34 {y: 2, indexLabel: “Kaka'”},
                   35 {y: 3, indexLabel: “Blackberry”},
                   36 {y: 1, indexLabel: “Windows Phone”},
                   37 {y: 5, indexLabel: “Others”},*/

                   element,
            ]
    }
   ]
});
chart.render();

Dumped array of $_SESSION["r_array"] as following
Array (
    [Trojan] => 1
    [Malware] => 3
    [Backdoor] => 6
    [Virus] => 2
    [Bot] => 5
    [Rootkit] => 7
    [Worm] => 5
)

2 个答案:

答案 0 :(得分:1)

element必须是数组,您尝试将其创建为字符串(语法错误)

var array = <? php echo json_encode($_SESSION["r_array"]); ?> ;

var count = 0;
var element = [];
var title = 'Malware lab, TCRC, CTA';

for (var i in array) {
    element.push({
        y: array[i],
        indexLabel: i
    })
    count++;
}

var chart = new CanvasJS.Chart("chartContainer", {
    title: {
        text: title
    },
    data: [{
        type: type,

        dataPoints: element
    }]
});
chart.render();

演示:Fiddle

答案 1 :(得分:0)

哟需要以正确的方式传递数组

使用其他变量datapoints = [];

并将推送对象放入该数组

    var datapoints = [];

    for( var i in array) {
            datapoints.push({ y : array[i] , indexLabel : i});
     }

然后使用它如下

     var chart = new CanvasJS.Chart(“chartContainer”,
     {
         title: {
            text: title
         },
     data: [
            { type: type,

                dataPoints: datapoints
        }
       ]
    });
    chart.render();