客户端向服务器端的php发送发布请求。 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”]]


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

最佳答案

看来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
            }
        ]
    });
});

09-25 20:31