0

客户端向服务器端的 php 发送 post 请求。php 返回 json 给客户端。例子:

[["1","-1"],["2","0"],["3","0"],["4","0"],["5","4" ],["6","5"],["7","3"]]

现在从客户端我必须创建图表。我使用 jQuery 插件 jqPlot 和 Flot 创建了图表,但 jqChart 无法正确显示。这是jQuery代码:

            if ($jqlib == "flot") {
                var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]];
                $.post('database2json.php', function(data){
                    $.plot($("#placeholder"), [d2, data]);
                },
                'json'
                );
            } else if ($jqlib == "jqchart") {
                $.post('database2json.php', function(podaci){
                    $('#placeholder').jqChart({
                        title: { text: 'Chart Title'},
                        series: [
                            {
                                type: 'line',
                                data: podaci
                            }
                        ]
                    });
                });
            }

使用该代码,Flot 用线条绘制图表,jqChart 绘制图表但没有线条,它是空图表。

如何解决这个问题呢?

EDIT1:这是 jqChart 输出的屏幕截图: 在此处输入图像描述

在 x 轴上,它按预期从 1 绘制到 31,y 轴也可以,但没有线。

EDIT2:@DraganMatek,提到 jqChart 接受对值 [x, y],其中 x 是字符串、日期或数字,y 是数字。

在数据库中有两列,类型为 int。

在服务器端获取这些数据的 PHP 代码是:

$result = mysql_query("select Dan, Temperatura from TEMPERATURA");
        $niz = array();
    while ($row = mysql_fetch_array($result)) {
                $niz[] = array($row['Dan'], $row['Temperatura']);  
    }

        $obj = json_encode($niz);
        echo $obj;

我不明白为什么在作为 json 发送后它同时是 x 和 y 字符串。也许我可以在客户端解析这个?

EDIT3:我在客户端检查了 Firebug,我得到了这个:

[["1","-1"],["2","0"],["3","0"],["4","0"],["5","4" ],["6","5"],["7","3"],["8","2"],["9","2"],["10","1" ],["11","-2"],["12","-2"],["13","0"],["14","1"],["15"," -2"],["16","-1"],["17","-1"],["18","-2"],["19","-1"],[ "20","3"],["21","-1"],["22","0"],["23","1"],["24","3"], ["25","1"],["26","1"],["27","-1"],["28","-1"],["29","4"],["30","5"],["31","5"]]

为什么会这样?进入数据库有两个整数。

4

2 回答 2

2

似乎 jqChart 需要 int 作为数组元素,不能处理字符串。更新了代码,如下所示。

$.post('database2json.php', function(podaci){
    $.each( podaci, function(i, e) {
        podaci[i][0] = parseInt(e[0]);
        podaci[i][1] = parseInt(e[1]);
    });

    $('#placeholder').jqChart({
        title: { text: 'Chart Title'},
        series: [
            {
                type: 'line',
                data: podaci
            }
        ]
    });
});
于 2012-01-18T22:20:40.167 回答
1

jqChart 数据的格式应为:["1", -1] 而不是 ["1", "-1"]。

第二个值必须是数字。

您也可以查看文档:jqChart Line Chart

于 2012-01-19T17:58:59.113 回答