尝试通过 Jinja 模板中渲染的 JavaScript 代码迭代 JSON 数据时,您可能会遇到“SyntaxError” :调用 JSON.parse() 时出现意外标记“&””错误。这个错误是由于 Flask 的 Jinja 环境在 HTML 模板中渲染时自动转义数据而导致的。
为了防止这种转义过程,并在 JavaScript 中将数据处理为 JSON ,Flask提供了tojson过滤器。它将 Python 对象转换为 JSON 并将它们标记为可以在模板中安全渲染。
return render_template("tree.html", tree=tree)
<script> var tree = {{ tree|tojson }}; </script>
如果您不处理 JSON 数据或已经将其转换为字符串,您可以使用安全过滤器或将字符串包装在标记中以防止转义:
return render_template("tree.html", tree=json.dumps(tree))
<script> var tree = {{ tree|safe }}; // or var tree = {{ Markup(json.dumps(tree)) }}; </script>
如果您打算使用 Jinja 模板本身中的数据而不是将其传递给 JavaScript,则可以省略 tojson 过滤器并使用直接使用原始 Python 数据。
return render_template("tree.html", tree=tree)
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
通过实现这些技术,您可以有效地使用渲染的 JSON 数据JavaScript 不会遇到 SyntaxError 问题。
以上是在 Jinja 模板中解析 JSON 时如何解决'SyntaxError: Unexpected token '&'”?的详细内容。更多信息请关注PHP中文网其他相关文章!