客户端向服务器端的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
}
]
});
});