Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
flask:将变量传递到javascript时出错_Javascript_Flask_Ascii_Jinja2 - Fatal编程技术网

flask:将变量传递到javascript时出错

flask:将变量传递到javascript时出错,javascript,flask,ascii,jinja2,Javascript,Flask,Ascii,Jinja2,我正在构建一个flask应用程序,需要将python后端创建的变量传递给前端的javascript,以跟踪某些参数。然而,我遇到了一个奇怪的编码问题,下面的示例概述了python后端、呈现的Jinja2模板前端以及Chrome控制台中显示的错误 app.py: @app.route('/') def send_name(): name = ["Michael"] return render_template('index.html', name=name) index.html

我正在构建一个flask应用程序,需要将python后端创建的变量传递给前端的javascript,以跟踪某些参数。然而,我遇到了一个奇怪的编码问题,下面的示例概述了python后端、呈现的Jinja2模板前端以及Chrome控制台中显示的错误

app.py:

@app.route('/')
def send_name():
    name = ["Michael"]
    return render_template('index.html', name=name)
index.html:

<html>
    <script>
        console.log('{{ name }}')
    </script>
</html>
符号#39是撇号的字符编码。如果我在上面的console.log语句(看起来像
console.log({{name}}})
中省略撇号(单引号),我会得到以下错误:

未捕获的语法错误:意外标记&

最奇怪的是,当我将变量打印到
标记之外的任何位置时,它工作正常


知道问题是什么吗?我如何解决它?

如果您想在javascript中使用有效的JSON对象/列表,请使用jinja中的
tojson
过滤器,如下所示:

console.log({{ name|tojson }});

tojson
过滤器还将该值标记为
safe
,因此它会禁用自动转义。

如果您想在javascript中使用有效的JSON对象/列表,请在jinja中使用
tojson
过滤器,如下所示:

console.log({{ name|tojson }});

tojson
过滤器还将该值标记为
safe
,因此它禁用自动转义。

name
是一个列表,而不是字典。为什么允许我们使用json过滤器?无论我是使用
tojson
safe
,还是两者兼用,这都适用于我的电脑,谢谢!使用一个或另一个或两者都好吗?根据jinja2文档,似乎
safe
内置在
tojson
中是的……我想这可能是我学会这个技巧后的一个新的附加功能;)从技术上讲,列表是有效的JSON,尽管我们通常不这么认为。很高兴这有帮助。将仅使用
tojson
name
更新答案是列表而不是字典。为什么允许我们使用json过滤器?无论我是使用
tojson
safe
,还是两者兼用,这都适用于我的电脑,谢谢!使用一个或另一个或两者都好吗?根据jinja2文档,似乎
safe
内置在
tojson
中是的……我想这可能是我学会这个技巧后的一个新的附加功能;)从技术上讲,列表是有效的JSON,尽管我们通常不这么认为。很高兴这有帮助。将仅使用
tojson