JSON输出的格式无效

时间:2013-10-21 22:41:33

标签: javascript php ajax json highcharts

我遇到了JSON格式的问题。我的目标是生成一个highcharts图表,其中的数据是通过ajax从php中提取的。除非数据输出的格式有问题,否则我终于完成了所有工作。

所以,在我的data.php文件中,我有:

$result = array();
$result['name'] = '2013';
$x = mysqli_query($con,"
    SELECT Logdatetime, Temp
    FROM alldata 
    LIMIT 12"
);

while($r = mysqli_fetch_array($x)){
$result['data'][] = $r['Temp'];
}

print json_encode($result, JSON_NUMERIC_CHECK);

当我尝试它时,输出看起来像这样:

{"name":2013,"data":[-1.4,-1.4,-1.3,-1.3,-1.3,-1.3,-1.3,-1.2,-1.3,-1.2,-1.2,-1.2]}

然后在我的主页面中,我有这样的AJAX调用:

$.ajax({
    url : 'data.php',
    datatype : 'json',
    success : function (json) {
        alert(json);
        options.series[0].name = json['name'];
        options.series[0].data = json['data'];
        chart = new Highcharts.Chart(options);
    },
});
}

我将警报放在那里检查数据,结果与PHP生成的结果相同,所以看起来是正确的。但是,解析“数据”和“名称”中包含的数据一定存在一些问题 - 换句话说,如果我把:

options.series[0].name = json['name'];

没有插入(警报产生“未定义”),如果我举例:

options.series[0].name = json[1];

然后我将名称作为第二个字符。这意味着AJAX对JSON输出的解释肯定存在一些问题,但我无法弄清楚问题是什么。

2 个答案:

答案 0 :(得分:3)

jQuery $.ajax属性是" dataType",而不是"数据类型"。如果您没有正确设置数据类型,则会将原始字符串作为回调的参数。

$.ajax({
    url : 'data.php',
    dataType : 'json', // <--- note the capital "T"
    success : function (json) {
        alert(json);
        options.series[0].name = json['name'];
        options.series[0].data = json['data'];
        chart = new Highcharts.Chart(options);
    }, // <--- GET RID OF THIS COMMA
});

答案 1 :(得分:0)

你需要将data放入第二行......试试这个:

options.series[0].name = json.name;
options.series[0].name = json.data[0];