首页 > 解决方案 > 将带有双引号的字符串字段从烧瓶传递到javascript

问题描述

我一直在为这个简单的任务而奋斗:在 python 烧瓶后端,我将此 dict 传递给前端:

data= {"id": "1", "text": "RC 5.5\"/140mm"}
print(data)
print(json.dumps(data))
return render_template("page.html", ..., data=json.dumps(data), ...)

在服务器端,它打印出:

{'id': '1', 'text': 'RC 5.5"/140mm'}
{"id": "1", "text": "RC 5.5\"/140mm"}

在 javescript 中,我尝试 console.log 它:

console.log(`{{ data| safe }}`);

它在控制台中显示如下:

{"id": 1, "text": "RC 5.5"/140mm"}

我不能 JSON.parse 这个:

JSON.parse(`{{ row_data | safe }}`)

它抛出一个错误:

Uncaught SyntaxError: Unexpected token / in JSON at position 29

显然,中间的双引号没有处理(转义?)

任何人都可以帮忙吗?

标签: javascriptpythonjsonflaskjinja2

解决方案


你想要一个原始字符串:用'r'作为字符串文字的前缀,并将字符串文字写在单引号中(以避免引入比你需要的更多的反斜杠):

data= {"id": "1", "text": r'RC 5.5\"/140mm'}

由于是原始字符串,python 不会解释反斜杠,它会出现在字符串中,因此会在 render_template 函数中传递。


推荐阅读