我在ColdFusion 10(zingcharts)中使用cfchart标记。包含图表的页面正在通过websocket接收数据,我正试图使用JavaScript定期将其中一些数据传递到图表,使用:
var x = data.number;
var handle = ColdFusion.Chart.getChartHandle();
handle.exec('mychart', 'appendseriesvalues', '{"plotindex": 0, "values": [x]}');
例如,如果我输入一个实际数字而不是x
,上面的代码就可以正常工作"values": [1.1]
运行良好。然而,如果我试图通过动态变量传递一个数字,它就不起作用,并抛出以下错误:
SyntaxError: JSON.parse: unexpected character
我想知道是否有人知道如何做到这一点?
继@PeterBoughton的回答/评论之后,ZingCharts API真的是有据可查。因此,是的,您可以传递一个对象,而不是一个对象的JSON表示(基于该页面上的代码示例)。这将是一个更可取的办法。
直接搞砸了<cfchart>
和ZingCharts。。。我发现做后者要容易得多,并将<cfchart>
从等式中完全删除。成为<cfchart>
的专家几乎没有什么好处(这不是一项有市场的技能),而直接使用Javascript库(如果不是特别的ZingCharts)是一种更好的工具。
您正在向handle.exec传递一个JSON字符串,该字符串在定义x变量的不同位置被转换为JS对象,从而导致错误。
相反,让x被解析为字符串的一部分,它应该起作用:
handle.exec( ... , '{"plotindex": 0, "values": ['+x+']}');