Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
Javascript Google图表-无效语法或意外标记_Javascript_Python_Flask_Jinja2 - Fatal编程技术网

Javascript Google图表-无效语法或意外标记

Javascript Google图表-无效语法或意外标记,javascript,python,flask,jinja2,Javascript,Python,Flask,Jinja2,我正在从mysql获取数据,以绘制饼图。 我是在使用jinja模板语法的python flask中完成这项工作的。 我想显示一个饼图 调试器向我显示了这一点 我可以在控制台中看到这些值。但它一直在说无效的语法或标记。如果你能指出我哪里做错了,我将不胜感激。多谢各位 更新 数据中包含的内容 [{u'number': 7, u'shockStatus': u'absent\r\n'}, {u'number': 7, u'shockStatus': u'present\r\n'}] 你有两个问题:

我正在从mysql获取数据,以绘制饼图。 我是在使用jinja模板语法的python flask中完成这项工作的。 我想显示一个饼图

调试器向我显示了这一点

我可以在控制台中看到这些值。但它一直在说无效的语法或标记。如果你能指出我哪里做错了,我将不胜感激。多谢各位

更新

数据中包含的内容

[{u'number': 7, u'shockStatus': u'absent\r\n'}, {u'number': 7, u'shockStatus': u'present\r\n'}]
你有两个问题:

  • 您的输入数据已嵌入换行符。您可能希望在Python代码中生成数据时解决这个问题
  • 您正在插入原始数据,就好像它是JavaScript安全的一样。不要那样做。使用生成与Javascript兼容的语法
从Python中,将
数据
序列转换为Javascript的正确格式,即成对的shockStatus和number值:

# if you have dictionaries
data_transformed = [[r['shockStatus'].strip(), r['number']] for r in data]
# or if you have objects with attributes
data_transformed = [[r.shockStatus.strip(), r.number] for r in data]
我在其中包含了一个
str.strip()
调用,用于从
shockStatus
值中删除换行符和其他前导或尾随空格

将其传递到模板并使用:

 var data = google.visualization.arrayToDataTable([
                ['Shock', 'Number'],
                {{ data_transformed|tojson|safe }}
 )];

谢谢你的回复。但我遇到了一个错误,那就是TypeError:Undefined不是JSON。所以我删除了tojson。在我删除之后,我在data_transformed语句中遇到了另一个错误,它是“意外的标记”。哦,我用另一种方法解决了这个问题。但我感谢你的帮助和建议。我还有很多东西要学。:)你的回答对帮助我解决这个问题很有用。@Sofia:TypeError意味着未定义
转换的数据
;您没有在
render_template()
调用中将其传递给模板。@Sofia:没有
tojson
的未定义值会导致插入一个空字符串,因此Javascript不满意,因为那里没有任何内容。我确实将其传递给模板:P
 var data = google.visualization.arrayToDataTable([
                ['Shock', 'Number'],
                {{ data_transformed|tojson|safe }}
 )];