以下是我今天正在努力的事情:
我正在尝试使用jqPlot库绘制图形。
sql查询输出数据,使用json_encode
在php中转换为json并保存在隐藏表单字段中。这工作正常,实际字段包含:
[["2011-12-10 12:01:00",271],["2011-12-10 12:13:05",132],["2011-12-11 12:17:55",388],["2011-12-10 22:03:40",5],["2011-12-11 12:10:54",830]]
然后使用以下命令在javascript中检索表单中的数据:
var data = document.getElementById("dataarray").value;
以便稍后将其用作jqPlot的数据。
data
变量格式正确,当使用document.write(data);
进行检查时,以json格式输出正确的数据,但每当我将其放在plot1
变量中以使用图表数据时,它都会抛出错误{ Safari中为{1}},Firefox中为[object Object]
。
整个javascript代码如下:
Uncaught #<Object>
我甚至试过$(document).ready(function(){
var data = document.getElementById("dataarray").value;
var test = [["2011-12-10 12:01:00",271],["2011-12-10 12:13:05",132],["2011-12-11 12:17:55",388],["2011-12-10 22:03:40",5],["2011-12-11 12:10:54",830]];
var plot1 = $.jqplot("chart_personal_2", [data], {
title:"Data Point Highlighting",
axes:{
xaxis:{
renderer:$.jqplot.DateAxisRenderer,
numberTicks: 3,
tickOptions:{
formatString:"%d/%m/%Y %H:%M:%S"
}
},
yaxis:{
label: "Elevation(m)",
tickOptions:{
showMark: true
}
}
},
highlighter: {
show: true,
sizeAdjust: 7.5
},
cursor: {
show: false
}
});
});
但它也没有用。
我假设我的output = String(data);
变量是一个不能用作jqPlot图的源数据的对象,它需要在使用之前转换为字符串吗?如果我错了,请纠正我。
希望有人知道如何解决这个问题,提前谢谢!
答案 0 :(得分:4)
您正在检索String
,但jqPlot
期待Array
,因此您必须在其上运行eval
:
var data = document.getElementById("dataarray").value;
eval('data = '+data+';');
或更好的解决方案:不要将其保存到隐藏输入,而是从php创建JS变量:
echo "<script type='text/javascript'> var data = ".json_encode($data).";</script>";