Beim Versuch, JSON-Daten zu durchlaufen, die in einer Jinja-Vorlage mit JavaScript gerendert wurden, Der Browser gibt den Fehler „SyntaxError: Unexpected token '&'“ aus. Das Problem tritt auf, wenn JSON.parse für die gerenderten Daten aufgerufen wird.
Flasks Jinja-Umgebung wendet automatisches HTML-Escape auf in Vorlagen gerenderte Daten an, um die Sicherheit zu verringern Risiken. Dieses Escapezeichen kann jedoch die Interpretation der Daten als JSON beeinträchtigen.
Flask stellt den Tojson-Filter zur Verfügung, um dieses Problem zu beheben. Es konvertiert Python-Objekte in JSON und markiert sie als sicher zum Rendern.
return render_template('tree.html', tree=tree)
In der Vorlage:
var tree = {{ tree|tojson }};
Wenn die Daten vorhanden sind Nicht für die Verwendung durch JavaScript gedacht, der Tojson-Filter ist nicht erforderlich. Erwägen Sie, die Python-Daten direkt zu übergeben und sie nach Bedarf in der Vorlage zu verwenden.
return render_template('tree.html', tree=tree)
In der Vorlage:
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
Wenn keine Escape-Funktion erforderlich ist und Sie bereits über JSON-Daten als Zeichenfolge verfügen, können Sie die Escape-Funktion mithilfe des sicheren Filters oder deaktivieren Markup.
Sicheren Filter verwenden:
return render_template('tree.html', tree=Markup(json.dumps(tree)))
In der Vorlage:
var tree = {{ tree }};
Markup verwenden:
return render_template('tree.html', tree=json.dumps(tree))
In der Vorlage:
var tree = {{ tree|safe }};
Das obige ist der detaillierte Inhalt vonWarum schlägt JSON.parse beim Rendern von JSON-Daten aus einer Jinja-Vorlage mit der Meldung „SyntaxError: Unexpected token '&'' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!