Google图表-在javascript中以变量形式传递数据
我正在使用谷歌图表在健康应用程序中创建报告。由于应用程序的工作方式,我必须在XSL文档中定义图表的数据,然后使用javascript获取和使用该数据。我无法在XSL中内联运行javascript—应用程序会阻止它 XSL工作正常,并提供以下信息:-Google图表-在javascript中以变量形式传递数据,javascript,xslt,charts,google-visualization,Javascript,Xslt,Charts,Google Visualization,我正在使用谷歌图表在健康应用程序中创建报告。由于应用程序的工作方式,我必须在XSL文档中定义图表的数据,然后使用javascript获取和使用该数据。我无法在XSL中内联运行javascript—应用程序会阻止它 XSL工作正常,并提供以下信息:- <div id="mydata" style="display:none;"> [{c:[{v: new Date(2020,3,21)}, {v:94.05}]}, {c:[{v: new Date(2
<div id="mydata" style="display:none;">
[{c:[{v: new Date(2020,3,21)}, {v:94.05}]},
{c:[{v: new Date(2020,3,29)}, {v:94.3}]},
{c:[{v: new Date(2020,4,5)}, {v:95}]},]
</div>
问题是它不起作用。我得到:
Uncaught (in promise) SyntaxError: Unexpected token c in JSON at position 0
at JSON.parse (<anonymous>)
at gvjs_Li (jsapi_compiled_default_module.js:55)
at new gvjs_L (jsapi_compiled_default_module.js:161)
at drawChart (<anonymous>:8:20)
这让我快发疯了。请帮帮我
更新:
终于破解了
我把cols的定义也放到了DIV中,并在所有内容周围加了引号,删除了建议中的“new”,最后它成功了 我有时会使用这种方法,以下是我的发现 当您硬编码数据时,它工作的原因,
您正在向数据表传递一个对象 但当数据来自XSL时,它是一个字符串 首先,所有对象键必须用引号括起来。
其次,您不能在日期上使用
new
运算符。你必须使用谷歌的 尝试从XSL中按如下方式格式化数据
[{"c":[{"v": "Date(2020,3,21)"}, {"v":94.05}]},
{"c":[{"v": "Date(2020,3,29)"}, {"v":94.3}]},
{"c":[{"v": "Date(2020,4,5)"}, {"v":95}]}]
注意:关于逗号,下面是我用来防止最后一个逗号的xsl
<xsl:if test="position() != last()">,</xsl:if>
,
我认为在div中定义的数据末尾附近有一个额外的逗号。这是真的,但是JS中的.replace会删除它。抱歉-我粘贴了错误的javascript(脚本现在已更正)希望这有所帮助-评论中提到的最后一个逗号可能是个问题,如果仍然不起作用,请删除它。。。
[{"c":[{"v": "Date(2020,3,21)"}, {"v":94.05}]},
{"c":[{"v": "Date(2020,3,29)"}, {"v":94.3}]},
{"c":[{"v": "Date(2020,4,5)"}, {"v":95}]}]
<xsl:if test="position() != last()">,</xsl:if>