首頁 > web前端 > js教程 > 解析 Jinja 渲染的 JSON 資料時如何解決 JavaScript 的語法錯誤?

解析 Jinja 渲染的 JSON 資料時如何解決 JavaScript 的語法錯誤?

Susan Sarandon
發布: 2024-12-09 19:22:11
原創
642 人瀏覽過

How to Resolve JavaScript's SyntaxError When Parsing Jinja-Rendered JSON Data?

JavaScript 在Jinja 模板中渲染的資料引發語法錯誤

當嘗試將JSON 資料從Flask 路由傳遞到Jinja 模板並使用JavaScript 對其進行迭代時,一個可能會遇到“SyntaxError: Unexpected token '&'”。當對渲染的資料呼叫 JSON.parse 時,會出現此錯誤。

問題

這個問題源自於 Flask 的 Jinja 環境,它會自動轉義 HTML 範本中渲染的資料作為安全措施。當嘗試在 JavaScript 中使用此轉義資料作為 JSON 時,會出現語法錯誤。

解決方案:使用 tojson 過濾器

為了解決此問題,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 }};
登入後複製

將資料傳遞給Jinja 而不是JavaScript

如果資料不適合JavaScript 用途但對JinjaScript 來說,不適合需要tojson 過濾器。直接傳遞 Python 資料並將其用作模板中的任何其他資料。

範例:

return render_template("tree.html", tree=tree)
登入後複製
登入後複製
{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}
登入後複製

以上是解析 Jinja 渲染的 JSON 資料時如何解決 JavaScript 的語法錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板