Rumah >hujung hadapan web >tutorial js >Mengapa JavaScript Saya Mendapat SyntaxError Semasa Memaparkan Data JSON daripada Templat Jinja?

Mengapa JavaScript Saya Mendapat SyntaxError Semasa Memaparkan Data JSON daripada Templat Jinja?

Susan Sarandon
Susan Sarandonasal
2024-12-11 21:37:10349semak imbas

Why Does My JavaScript Get a SyntaxError When Rendering JSON Data from a Jinja Template?

JavaScript Meningkatkan SyntaxError dengan Data Diberikan dalam Templat Jinja

Pengenalan

Apabila menghantar data JSON dari laluan Flask ke templat Jinja, penyemak imbas mungkin buang SyntaxError: Token '&' yang tidak dijangka. Menjangkakan nama sifat semasa memaparkan data. Memahami cara mengendalikan data JSON yang diberikan dalam JavaScript adalah penting untuk pengendalian templat yang berjaya.

Escaping dan JSON Rendering

Persekitaran Jinja Flask secara automatik melepaskan data yang diberikan dalam templat HTML untuk mengelakkan kelemahan keselamatan. Untuk data yang perlu dianggap sebagai JSON, Flask menyediakan penapis tojson, yang membuang data ke JSON dan menandakannya sebagai selamat. Menggunakan penapis tojson memastikan bahawa data dipaparkan tanpa melarikan diri, membolehkan ia dihuraikan dengan betul dalam JavaScript.

tree = get_nodes("Root")
return render_template("folder.html", data=tree|tojson)
var tree = {{ tree|tojson }};

Sebagai alternatif, dalam versi Flask yang lebih lama, penapis selamat boleh digunakan untuk menandakan data sebagai selamat:

var tree = {{ tree|tojson|safe }};

Menggunakan Penapis Selamat

Jika data sudah telah dibuang ke JSON, penapis selamat boleh digunakan untuk menandainya sebagai selamat untuk dipaparkan tanpa melarikan diri:

return render_template('tree.html', tree=json.dumps(tree))
var tree = {{ tree|safe }};

Membungkus rentetan JSON dalam Markup juga sama dengan menggunakan penapis selamat:

return render_template('tree.html', tree=Markup(json.dumps(tree)))
var tree = {{ tree }};

Menggunakan Data Python dalam Jinja

Jika data tidak dihantar ke JavaScript tetapi digunakan dalam Jinja, anda boleh meninggalkan pemaparan JSON dan menggunakan data Python secara langsung:

return render_template('tree.html', tree=tree)
{% for item in tree %}
<li>{{ item }}<li>
{% endfor %}

Atas ialah kandungan terperinci Mengapa JavaScript Saya Mendapat SyntaxError Semasa Memaparkan Data JSON daripada Templat Jinja?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn