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)
Alternative Ansätze:
var data = {{ tree|safe }};
return render_template("template.html", data=Markup(json.dumps(tree)))
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)
Implementierung:
In der Jinja-Vorlage:
var data = {{ data }}; for (i in obj) { document.write(obj[i].text + "<br />"); }
Alternativ können Jinja-Daten direkt ohne JavaScript-Analyse verwendet werden:
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
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!