You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:07:08