使用jqplot错误地表示php数据

时间:2014-11-10 10:35:18

标签: php arrays jqplot

创建一个由jqplot正确评估的数组时遇到问题。 如果我这样尝试,我有一个x轴范围从-5到95,但使用正确的线。 实际上我希望x轴的图表从0到30。

使用firebug我可以用typeof检查params是一个对象(数组)。 失败在哪里?

这是我的getPlotData.php,其中包含一些虚拟数据:

$temp = array();
for( $i=0; $i<30; $i++ ){
    $temp[] = "[" . $i . "," . ($i*5) . "]";
}
$return['line'] = "[" . implode(',', $temp . "]";

die(json_encode($return));

这是我的ajax函数,它调用createPlot-function:

$.ajax({
    type: "GET",
    dataType: "json",
    url: "getPlotData.php?rand=" + new Date(),
    data: data,
    cache: false,
    success: function(data) {
        var params = eval(data['line']);
        createPlot(params);
    }
});

function createPlot(params){
    plot1 = $.jqplot('plot_data', [params], { 
                series:[{showMarker:true}],
                markerOptions: { style:'circle' },
                axesDefaults:{
                    tickRenderer: $.jqplot.CanvasAxisTickRenderer ,
                    tickOptions: {
                      fontSize: '14px',
                      textColor: "#fff"
                    }
                },
                 axes:{
                  xaxis:{
                    labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
                    label:'Tag',
                    tickOptions:{
                    },
                    labelOptions: {
                        fontSize: '13pt',
                        textColor: '#FFFFFF'
                    }
                  },
                  yaxis:{
                    label:'Anzahl',
                    labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
                    tickOptions:{
                    },
                    labelOptions: {
                        fontSize: '13pt',
                        textColor: '#FFFFFF'
                    }
                  }
                }
            });

1 个答案:

答案 0 :(得分:0)

目前您正在使用implodejson_encode。我想,手动创建JSON可能会在输出中产生某种错误。 (就像对JSON数据进行双重编码一样。)

如果您只先将数据添加到数组然后再添加json_encode整个数据集,它应该可以工作。

<?php
$temp = array();
for( $i=0; $i < 30; $i++ ) {
    $temp[] = array( $i, $i*5 );
}
$return['line'] = $temp;
die( json_encode( $return ) );