如何透過JavaScript 使用Jinja 範本中渲染的JSON 資料
在Flask 中,當將資料從路由傳遞到Jinja 範本時,自動啟用轉義以防止安全漏洞。但是,當嘗試在 JavaScript 中將資料用作 JSON 時,這可能會導致問題。
SyntaxError: Unexpected Token '&'
當嘗試使用渲染的資料時JSON.parse時,出現錯誤“SyntaxError: Unexpected token '&'”,因為Jinja轉義了
使用tojson 過濾器
為了解決這個問題,Flask 提供了tojson 過濾器,它可以安全地將資料轉儲為JSON 並將其標記為安全渲染:
return render_template('tree.html', tree=tree)
<script>var tree = {{ tree|tojson }};</script>
以前的Flask行為與安全Filter
舊版的Flask 沒有將轉儲的資料標記為安全,因此使用了以下方法:
<script>var tree = {{ tree|tojson|safe }};</script>
但是,這不再是必要的。
沒有 JSON 的替代方法
如果你沒有通過將數據傳遞給 JavaScript,但在 Jinja 中使用它,您可以傳遞原始 Python 數據,而無需調用tojson:
return render_template('tree.html', tree=tree)
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
其他選項
以上是如何在 JavaScript 中安全地使用 Flask Jinja 模板中的 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!