如何将json从php传递给jqPlot的javascript?

时间:2011-12-13 18:10:21

标签: php mysql json jqplot

以下是我今天正在努力的事情:

我正在尝试使用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图的源数据的对象,它需要在使用之前转换为字符串吗?如果我错了,请纠正我。

希望有人知道如何解决这个问题,提前谢谢!

1 个答案:

答案 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>";