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
Lepaskan: 2024-12-11 21:37:10
asal
470 orang telah melayarinya

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)
Salin selepas log masuk
var tree = {{ tree|tojson }};
Salin selepas log masuk

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

var tree = {{ tree|tojson|safe }};
Salin selepas log masuk

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))
Salin selepas log masuk
var tree = {{ tree|safe }};
Salin selepas log masuk

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

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

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)
Salin selepas log masuk
{% for item in tree %}
<li>{{ item }}<li>
{% endfor %}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan