【发布时间】:2013-06-25 13:05:32
【问题描述】:
我需要用 php 脚本返回的数据作为 json 编码数据在 flot 中绘制图表 我像这样通过jquery获取数据
$("button").click(function(){
var dp1 = $('#dp1').val();
var dp2 = $('#dp2').val();
$.ajax({
type: "GET",
url: "chart.php",
datatype:"json",
success: onSuccess,
data: {d1:dp1, d2:dp1}
});
function onSuccess(series) {
var plotarea = $("#pieChart");
plotarea.css("height", "300px");
plotarea.css("width", "400px");
$.plot( plotarea , [
{
data: series,
bars: {
show: true
}
}
] );
}
});
数据返回是 json 编码的,我可以像这样在 firebug 中看到它
[["ebbok1",39.55],["ebbok2",92.23],["ebbok3",102.44]]
但我的图表是空的
返回json数据的php文件是
$dataset = array();
while($row = $result->fetch_array(MYSQLI_ASSOC)) {
//echo $row['amount'] . "\t" . $row['product_name']. "\n";
$dataset[] = array( $row['product_name'], $row['amount'] );
}
echo json_encode($dataset,JSON_NUMERIC_CHECK);
我做错了什么?
编辑
我修改了我的 php 脚本,它现在返回这样的数据
[{"label":"ebook1","data":39.55},{"label":"ebook2","data":92.23},{"label":"ebook3","data":102.44}]
但我仍然得到空图表
【问题讨论】:
-
你的回声返回什么? echo json_encode($dataset,JSON_NUMERIC_CHECK);
-
echo 在 firedebug 的结果选项卡中返回 json 编码的字符串,它显示如下
[["ebbok1",39.55],["ebbok2",92.23],["ebbok3",102.44]] -
啊,是的,抱歉,错过了那部分。我的 josn 带着 {} 大括号而不是 [] 回来了。尝试返回 {"result":[{0:"ebbok1",39.55}],[{1:"ebbok2",92.23}]}
-
我可以返回
"result":[{"1":["ebbok1",39.55]},{"2":["ebbok2",92.23]},{"3":["ebbok3",102.44]}]},但图表仍然是空的 -
这可能不是解决方案,因为 flot 需要一个数据集,它看起来像正在返回。我还在寻找。
标签: php jquery json charts flot