Bei der Übergabe von JSON-Daten von einer Flask-Route an eine Jinja-Vorlage kann es sein, dass der Browser wirft einen SyntaxError: Unexpected token '&'. Beim Rendern der Daten wurde ein Eigenschaftsname erwartet. Für den erfolgreichen Umgang mit Vorlagen ist es von entscheidender Bedeutung, zu verstehen, wie mit gerenderten JSON-Daten in JavaScript umgegangen wird.
Die Jinja-Umgebung von Flask maskiert in HTML-Vorlagen gerenderte Daten automatisch, um Sicherheitslücken zu vermeiden. Für Daten, die als JSON behandelt werden müssen, stellt Flask den Tojson-Filter bereit, der die Daten in JSON ausgibt und als sicher markiert. Durch die Verwendung des Tojson-Filters wird sichergestellt, dass die Daten ohne Escapezeichen gerendert werden, sodass sie in JavaScript korrekt analysiert werden können.
tree = get_nodes("Root") return render_template("folder.html", data=tree|tojson)
var tree = {{ tree|tojson }};
Alternativ kann in älteren Flask-Versionen der sichere Filter zum Markieren verwendet werden Daten als sicher:
var tree = {{ tree|tojson|safe }};
Wenn die Daten bereits gespeichert wurden JSON, der sichere Filter kann verwendet werden, um es als sicher für das Rendern ohne Escape zu markieren:
return render_template('tree.html', tree=json.dumps(tree))
var tree = {{ tree|safe }};
Das Einschließen der JSON-Zeichenfolge in Markup entspricht auch der Verwendung des sicheren Filters:
return render_template('tree.html', tree=Markup(json.dumps(tree)))
var tree = {{ tree }};
Wenn die Daten nicht an JavaScript übergeben, sondern in Jinja verwendet werden, können Sie dies tun Lassen Sie das JSON-Rendering weg und verwenden Sie Python-Daten direkt:
return render_template('tree.html', tree=tree)
{% for item in tree %} <li>{{ item }}<li> {% endfor %}
Das obige ist der detaillierte Inhalt vonWarum erhält mein JavaScript beim Rendern von JSON-Daten aus einer Jinja-Vorlage einen Syntaxfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!