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

Flask框架下Jinja传递Python列表到JavaScript报语法错误如何解决?

问题原因

你写的JS代码多套了一层不必要的大括号,触发了语法错误:

  • 后端通过json.dumps(devices)输出的devices_test本身就是符合JS语法的数组字面量,不需要额外用{}包裹
  • 你现有的写法最终渲染出来的JS代码为var data = { [{"Version": "V14E", ...}, ...] };,直接把数组塞到对象字面量里,不符合JS对象要求的键:值语法,所以会抛出声明缺失、属性赋值预期等报错。

修复方法

直接去掉包裹Jinja变量的多余大括号即可,修改后的JS代码如下:

function update_device_form(strDevice) {
  // 去掉多余的外层{},直接赋值
  var data = {{ devices_test | safe }};

  var device_index = document.getElementById("devices").selectedIndex;

  if (device_index == 0) { //IOW if no device is selected
    document.getElementById("device_id").value = "";
  } else {
    document.getElementById("device_id").value = '';
  }
}

补充注意点

  • Python的json.dumps默认输出双引号格式的JSON,完全符合JS语法要求,不需要额外转义
  • safe过滤器必须保留,防止Jinja自动转义JSON里的特殊字符导致语法错误

内容的提问来源于stack exchange,提问作者LarryYourWaiter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 16:54:03