Javascript 插入标签“;系列:”;从响应服务器JSON进入Highcharts。格式错误的JSON?
这是我关于这个问题的第二个问题: 我试图用Highcharts创建一个图表,但是我不能用PHP从服务器返回的响应填充字段“series”。答案是JSON格式的。图表没有呈现,它变成白色背景。事先非常感谢。 我向她粘贴了3个代码: 服务器端PHP:Javascript 插入标签“;系列:”;从响应服务器JSON进入Highcharts。格式错误的JSON?,javascript,php,jquery,json,highcharts,Javascript,Php,Jquery,Json,Highcharts,这是我关于这个问题的第二个问题: 我试图用Highcharts创建一个图表,但是我不能用PHP从服务器返回的响应填充字段“series”。答案是JSON格式的。图表没有呈现,它变成白色背景。事先非常感谢。 我向她粘贴了3个代码: 服务器端PHP: $arr = array(); while ($row_RecordsetTabla = mysql_fetch_assoc($RecordsetTabla)) { $fecha = $row_RecordsetTabla['fecha'];
$arr = array();
while ($row_RecordsetTabla = mysql_fetch_assoc($RecordsetTabla))
{
$fecha = $row_RecordsetTabla['fecha'];
$hora = $row_RecordsetTabla['hora'];
$estado = $row_RecordsetTabla['estado'];
$arregloFecha = date_format(new DateTime($fecha),"Y,m,d");
$arregloHora = date_format(new DateTime($hora),"H,i");
$arr[] = array("Date.UTC(".$arregloFecha.",".$arregloHora.")", $estado);
}
$arr2[] = array('data' => $arr);
$json = json_encode($arr2);
echo str_replace('"', '', $json);
响应服务器JSON:
[{data:[[Date.UTC(2014,03,27,12,00),2],[Date.UTC(2014,04,01,19,10),1],[Date.UTC(2014,04,01,15,44),1]]}]
客户端JAVASCRIPT代码:
$.get("mostrarStatsDispositivo.php", {idDispositivo:"2", numeroDispositivo:"hola"}, function(data){
chart = new Highcharts.Chart({
chart: {
renderTo: 'divStatsDispositivo',
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
title: {
text: 'Gráfica de actividad'
},
tooltip: {
enabled: false,
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats : {
hour: '%H',
}
},
yAxis: {
categories: [ 'APAGADO', 'ACTIVO', 'ALARMA'],
title: {
text: 'ESTADO'
},
min: 0
},
series : [{
name : 'grafica',
type : 'line',
data : data[0].data //<-------thanks Barbara!
}]
});
});
正确的路线是:
$arr2 = array('data' => $arr);
创建JSON行的另一个错误,以及将数据放在“series:”上的另一个错误。检查下面的响应 将php文件更改为如下所示:
$arr = array();
while ($row_RecordsetTabla = mysql_fetch_assoc($RecordsetTabla))
{
$fecha = $row_RecordsetTabla['fecha'];
$hora = $row_RecordsetTabla['hora'];
$estado = $row_RecordsetTabla['estado'];
$arregloFecha = date_format(new DateTime($fecha),"Y-m-d");
$arregloHora = date_format(new DateTime($hora),"H:i");
$date = strtotime($arregloFecha . " " . $arregloHora) * 1000;
$arr[] = array($date, floatval($estado));
}
$arr2 = array('data' => $arr);
echo json_encode($arr2);
您的JSON格式不正确,因为当您返回Date.UTC(2014,03,27,12,00)而不带引号时,它会破坏JSON的格式,因此您应该在回显之前将时间转换为php中的微秒
另外,您可能需要将javascript行更改为
data: data.data
谢谢你,杰科。。。非常感谢您的回复。我试图更改代码行,但图表仍然不起作用(白色背景)。你认为问题在于我如何传递这些值吗去海图。。。。对不起我的英语!我把它放在fiddle中,发现了bug,删除
在这里输入代码(javascript文件,第三行),它就工作了:)这里是fiddle,顺便说一句,你需要按日期对输入进行排序。谢谢。。。我的原始代码中没有这一行。复制有问题的文件时出错。如果我在javascript中从JSON复制变量的值,效果很好(如您在示例中所述)。但是从另一个文件(PHP服务器端)接收JSON是不可行的。也谢谢你的帮助和奉献。如果我把'data'的值(收到$get函数)直接放在标签“series:”上,不起作用。呜呜!杰科。。。再次感谢你。我按照您的指示更改了PHP文件。但仍然不起作用。Highchart无法打印图表。同时,我也感谢你的帮助和坚持。。。。我欠你一杯啤酒你能给我一杯吗?它甚至会把xAxis画成yAxis吗?你为什么要做str_replace(“”,“,$json)
?你为什么要使json_encode
为你创建的有效json无效?是的,你是对的。json创建得太错了。我想我必须删除构建json的引号。谢谢你的帮助!我从代码中删除了str_replace()。
data: data.data