Chart.js 4.2.1散点图添加labels报错:Unexpected token '&'
解决Flask传递Chart.js labels时的语法错误
问题出在Flask的Jinja2模板引擎默认会转义HTML特殊字符:你传递的['test1', 'test2', 'test3']字符串里的单引号会被自动转成',前端JS解析时就会出现Uncaught SyntaxError: Unexpected token '&'错误,这和你写的labels语法无关。
给你两种可行的解决方法:
方法1:用safe过滤器禁用转义
直接在模板变量后加上|safe,告诉Jinja2不要转义这个字符串:
labels: {{ labels|safe }}
这样前端就能拿到原始的数组格式字符串,不会被转义。
方法2:用JSON格式传递(更规范)
后端把labels序列化为JSON字符串,前端直接解析:
- Flask后端代码:
import json from flask import render_template # 定义labels列表 labels = ['test1', 'test2', 'test3'] # 转成JSON字符串传递 return render_template('your_page.html', labels=json.dumps(labels)) - 前端代码:
labels: JSON.parse({{ labels|safe }})
或者更简便的方式,用Jinja2的tojson过滤器直接处理:
labels: {{ labels|tojson|safe }}
这种方式能避免手动构造字符串可能出现的格式问题,安全性更高。
至于data: {{ data }}能正常运行,大概率是因为data是纯数字组成的数组,转义后不影响JS解析,而字符串数组的引号被转义就会触发语法错误。
内容的提问来源于stack exchange,提问作者BlackHawk
相关产品推荐
相关产品推荐

