Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google图表-在javascript中以变量形式传递数据_Javascript_Xslt_Charts_Google Visualization - Fatal编程技术网

Google图表-在javascript中以变量形式传递数据

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

我正在使用谷歌图表在健康应用程序中创建报告。由于应用程序的工作方式,我必须在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(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>