問題:
嘗試利用Jinja資料JavaScript 中的範本失敗並顯示「SyntaxError: Unexpected token '&'」。錯誤。如何在 JavaScript 中有效地使用渲染的 JSON 資料?
解決方案:
出於安全目的,Flask 的 Jinja 環境本質上會對 HTML 模板中渲染的資料進行轉義。當傳遞要解釋為 JSON 的 Python 物件時,應使用 tojson 過濾器來適當地轉換資料並將資料標記為安全性:
return render_template('tree.html', tree=tree)
var tree = {{ tree|tojson }};
如果 JSON未渲染或之前已轉換為字串,可以使用安全過濾器或標記包裝器來確保安全渲染:
# already dumped to json return render_template('tree.html', tree=json.dumps(tree))
var tree = {{ tree|safe }};
# already dumped and marked safe return render_template('tree.html', tree=Markup(json.dumps(tree)))
var tree = {{ tree }};
或者,如果資料僅在Jinja中使用並且不傳遞給JavaScript,則不需要JSON。原始Python資料可以直接在模板中傳遞使用:
return render_template('tree.html', tree=tree)
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
以上是如何在 JavaScript 中安全地使用從 Jinja 模板渲染的 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!