Javascript 插入标签“;系列:”;从响应服务器JSON进入Highcharts。格式错误的JSON?

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'];

这是我关于这个问题的第二个问题:

我试图用Highcharts创建一个图表,但是我不能用PHP从服务器返回的响应填充字段“series”。答案是JSON格式的。图表没有呈现,它变成白色背景。事先非常感谢。 我向她粘贴了3个代码:

服务器端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");
    $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