Heim > Web-Frontend > js-Tutorial > Wie behebe ich den SyntaxError von JavaScript beim Parsen von Jinja-gerenderten JSON-Daten?

Wie behebe ich den SyntaxError von JavaScript beim Parsen von Jinja-gerenderten JSON-Daten?

Susan Sarandon
Freigeben: 2024-12-09 19:22:11
Original
642 Leute haben es durchsucht

How to Resolve JavaScript's SyntaxError When Parsing Jinja-Rendered JSON Data?

JavaScript löst einen Syntaxfehler bei in der Jinja-Vorlage gerenderten Daten aus

Beim Versuch, Daten als JSON von einer Flask-Route an eine Jinja-Vorlage zu übergeben und mit JavaScript darüber zu iterieren, eine könnte auf einen „SyntaxError: Unerwartetes Token ‚&‘“ stoßen. Dieser Fehler tritt auf, wenn JSON.parse für die gerenderten Daten aufgerufen wird.

Problem

Das Problem rührt von der Jinja-Umgebung von Flask her, die aus Sicherheitsgründen automatisch in HTML-Vorlagen gerenderte Daten maskiert. Beim Versuch, diese maskierten Daten als JSON in JavaScript zu verwenden, treten Syntaxfehler auf.

Lösung: Verwendung des Tojson-Filters

Um dieses Problem zu beheben, stellt Flask den Tojson-Filter bereit. Dieser Filter speichert die Python-Daten automatisch in JSON und markiert sie als sicher für die Darstellung in JavaScript.

Beispiel:

return render_template("tree.html", tree=tree)
Nach dem Login kopieren
Nach dem Login kopieren
var tree = {{ tree|tojson }};
Nach dem Login kopieren

Alternative Lösungen

Sicheren Filter verwenden:

Wenn JSON nicht gerendert wird, der sichere Filter kann verwendet werden, um zu verhindern, dass Jinja den Daten entkommt.

Beispiel:

var tree = {{ tree|safe }};
Nach dem Login kopieren

Markup verwenden:

The Daten können vor dem Rendern auch in Markup verpackt werden, was der Verwendung des Safes entspricht Filter.

Beispiel:

var tree = {{ tree }};
Nach dem Login kopieren

Übergabe von Daten an Jinja anstelle von JavaScript

Wenn die Daten nicht für die Verwendung von JavaScript, sondern für Jinja bestimmt sind , der Tojson-Filter ist nicht erforderlich. Übergeben Sie die Python-Daten direkt und verwenden Sie sie wie alle anderen Daten in der Vorlage.

Beispiel:

return render_template("tree.html", tree=tree)
Nach dem Login kopieren
Nach dem Login kopieren
{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie behebe ich den SyntaxError von JavaScript beim Parsen von Jinja-gerenderten JSON-Daten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage