Javascript Google图表-无效语法或意外标记
我正在从mysql获取数据,以绘制饼图。 我是在使用jinja模板语法的python flask中完成这项工作的。 我想显示一个饼图 调试器向我显示了这一点 我可以在控制台中看到这些值。但它一直在说无效的语法或标记。如果你能指出我哪里做错了,我将不胜感激。多谢各位 更新 数据中包含的内容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'}] 你有两个问题:
[{u'number': 7, u'shockStatus': u'absent\r\n'}, {u'number': 7, u'shockStatus': u'present\r\n'}]
你有两个问题:
- 您的输入数据已嵌入换行符。您可能希望在Python代码中生成数据时解决这个问题
- 您正在插入原始数据,就好像它是JavaScript安全的一样。不要那样做。使用生成与Javascript兼容的语法
数据
序列转换为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 }}
)];