Javascript JSON输出的格式不工作
我对JSON格式有问题。我的目标是使用通过ajax从php提取的数据生成highcharts图表。我终于让它全部工作,除了数据输出的格式有一些问题 因此,在我的data.php文件中,我有:Javascript JSON输出的格式不工作,javascript,php,ajax,json,highcharts,Javascript,Php,Ajax,Json,Highcharts,我对JSON格式有问题。我的目标是使用通过ajax从php提取的数据生成highcharts图表。我终于让它全部工作,除了数据输出的格式有一些问题 因此,在我的data.php文件中,我有: $result = array(); $result['name'] = '2013'; $x = mysqli_query($con," SELECT Logdatetime, Temp FROM alldata LIMIT 12" ); while($r = mysqli_f
$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({
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);
},
});
}
然后在我的主页中,我有如下AJAX调用:
{"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({
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生成的结果相同,因此看起来是正确的。但是,解析“data”和“name”中包含的数据时肯定会有一些问题,换句话说,如果我把:
options.series[0].name = json['name'];
未插入任何内容(警报生成“未定义”),例如:
options.series[0].name = json[1];
然后我得到第二个字符的名字。这意味着AJAX对JSON输出的解释肯定有问题,但我无法找出问题所在。您还需要将
数据
放在第二行中。。。试试这个:
options.series[0].name = json.name;
options.series[0].name = json.data[0];
jQuery
$.ajax
属性是“数据类型”,而不是“数据类型”。如果未正确设置数据类型,则会将原始字符串作为回调的参数
$.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
});
$.ajax({
url:'data.php',
dataType:'json',//options的值从何而来?如何声明和初始化?options.series[0].name=json[0];给了我一个引号,因此数据似乎没有用json编码,因为它将引号视为第一个字符var options={chart:{renderTo:'container',type:'spline',zoomType:'x',},series:[{name:'',data:[]}};这工作正常,我尝试硬编码了一些数字,结果成功了。是的,您得到了一个字符串,因为您发送到$.ajax()的选项
不正确-请看我的答案。哦,我的上帝……我爱你……:D我花了好几个小时尝试一切,研究互联网等……就这一个愚蠢的大写字母,一切都很有效……谢谢!@user2370078很高兴能帮上忙!我花了好长时间才看到它!@user2370078下次您可以使用服务或检查代码时。