當嘗試將JSON 資料從Flask 路由傳遞到Jinja 模板並使用JavaScript 對其進行迭代時,一個可能會遇到“SyntaxError: Unexpected token '&'”。當對渲染的資料呼叫 JSON.parse 時,會出現此錯誤。
這個問題源自於 Flask 的 Jinja 環境,它會自動轉義 HTML 範本中渲染的資料作為安全措施。當嘗試在 JavaScript 中使用此轉義資料作為 JSON 時,會出現語法錯誤。
為了解決此問題,Flask 提供了 tojson 過濾器。此過濾器會自動將 Python 資料轉儲為 JSON 並標記其可以安全地在 JavaScript 中渲染。
範例:
return render_template("tree.html", tree=tree)
var tree = {{ tree|tojson }};
使用安全過濾器:
如果不渲染JSON,可以使用安全過濾器來防止Jinja 轉義資料。
範例:
var tree = {{ tree|safe }};
使用Markup:
渲染前也可以將資料包裝在Markup中,相當於使用安全過濾器。
範例:
var tree = {{ tree }};
如果資料不適合JavaScript 用途但對JinjaScript 來說,不適合需要tojson 過濾器。直接傳遞 Python 資料並將其用作模板中的任何其他資料。
範例:
return render_template("tree.html", tree=tree)
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
以上是解析 Jinja 渲染的 JSON 資料時如何解決 JavaScript 的語法錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!