Cara Menggunakan Data JSON yang Diberikan dalam Templat Jinja dengan JavaScript
Dalam Flask, apabila menghantar data dari laluan ke templat Jinja, automatik melarikan diri didayakan untuk mengelakkan kelemahan keselamatan. Walau bagaimanapun, ini boleh menyebabkan masalah apabila cuba menggunakan data sebagai JSON dalam JavaScript.
SyntaxError: Token Tidak Dijangka '&'
Apabila cuba menggunakan data yang diberikan dengan JSON.parse, ralat "SyntaxError: Token tidak dijangka '&'" berlaku kerana Jinja melarikan diri daripada aksara "&" dalam output.
Menggunakan Penapis tojson
Untuk menyelesaikan masalah ini, Flask menyediakan penapis tojson yang membuang data dengan selamat sebagai JSON dan menandakannya sebagai selamat untuk pemaparan:
return render_template('tree.html', tree=tree)
<script>var tree = {{ tree|tojson }};</script>
Gelagat Kelalang Terdahulu dan selamat Penapis
Versi lama Flask tidak menandakan data yang dibuang sebagai selamat, jadi pendekatan berikut telah digunakan:
<script>var tree = {{ tree|tojson|safe }};</script>
Walau bagaimanapun, ini tidak lagi diperlukan.
Pendekatan Alternatif Tanpa JSON
Jika anda tidak menghantar data ke JavaScript tetapi menggunakannya dalam Jinja, anda boleh menghantar data Python asal tanpa memanggil tojson:
return render_template('tree.html', tree=tree)
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
Pilihan Lain
Atas ialah kandungan terperinci Bagaimana Menggunakan Data JSON dengan Selamat daripada Templat Jinja Flask dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!