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

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

Susan Sarandon
Freigeben: 2024-12-25 16:33:20
Original
364 Leute haben es durchsucht

How to Fix JavaScript SyntaxErrors When Parsing Jinja-Rendered JSON Data?

JavaScript SyntaxError with Jinja-Rendered Data

Problem: Beim Versuch, in a gerenderte JSON-Daten zu analysieren Bei einer Jinja-HTML-Vorlage mit JavaScript ist ein SyntaxError aufgetreten, der auf ein unerwartetes „&“ hinweist. Token.

Ursache: Die Jinja-Umgebung von Flask maskiert aus Sicherheitsgründen automatisch Daten, die in HTML-Vorlagen gerendert werden. Dies ist problematisch, wenn JSON-Objekte an JavaScript übergeben werden, da die maskierten Zeichen das Parsen beeinträchtigen.

Lösung: Verwenden Sie den Tojson-Filter oder Markup von Flask, um Daten als sicher zu markieren

Zu Um dieses Problem zu beheben, verwenden Sie den Tojson-Filter von Flask, der Daten in JSON speichert und sie für die Darstellung darin als sicher markiert JavaScript.

return render_template("template.html", data=tree|tojson)
Nach dem Login kopieren

Alternative Ansätze:

  • Sicherer Filter (veraltet): Dieser Filter, obwohl veraltet, markiert Daten als sicher ohne JSON Konvertierung.
var data = {{ tree|safe }};
Nach dem Login kopieren
  • Markup-Wrapper: Das Einschließen der JSON-Zeichenfolge in Markup vor dem Rendern entspricht dem sicheren Filter.
return render_template("template.html", data=Markup(json.dumps(tree)))
Nach dem Login kopieren

Direkte Python-Datennutzung:

Wenn die gerenderten Daten nicht beabsichtigt sind Erwägen Sie für JavaScript, die Python-Daten direkt zu übergeben, ohne JSON-Konvertierung oder Filter zu verwenden.

return render_template("template.html", data=tree)
Nach dem Login kopieren

Implementierung:

In der Jinja-Vorlage:

var data = {{ data }};

for (i in obj) {
   document.write(obj[i].text + "<br />");
}
Nach dem Login kopieren

Alternativ können Jinja-Daten direkt ohne JavaScript-Analyse verwendet werden:

{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie behebe ich JavaScript-Syntaxfehler 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