Lors de la tentative de parcourir les données JSON rendues dans un modèle Jinja à l'aide de JavaScript, le navigateur renvoie une erreur "SyntaxError: Unexpected token '&'". Le problème survient lors de l'appel de JSON.parse sur les données rendues.
L'environnement Jinja de Flask applique l'échappement HTML automatique aux données rendues dans les modèles pour atténuer la sécurité risques. Cependant, cet échappement peut interférer avec l'interprétation des données au format JSON.
Flask fournit le filtre tojson pour résoudre ce problème. Il convertit les objets Python en JSON et les marque comme sûrs pour le rendu.
return render_template('tree.html', tree=tree)
Dans le modèle :
var tree = {{ tree|tojson }};
Si les données sont n'est pas destiné à être utilisé par JavaScript, le filtre tojson est inutile. Pensez à transmettre les données Python directement et à les utiliser dans le modèle si nécessaire.
return render_template('tree.html', tree=tree)
Dans le modèle :
{% for item in tree %} <li>{{ item }}</li> {% endfor %}
Si l'échappement n'est pas nécessaire et vous avez déjà des données JSON sous forme de chaîne, vous pouvez désactiver l'échappement à l'aide du filtre sécurisé ou Balisage.
Utilisation d'un filtre sécurisé :
return render_template('tree.html', tree=Markup(json.dumps(tree)))
Dans le modèle :
var tree = {{ tree }};
Utilisation du balisage :
return render_template('tree.html', tree=json.dumps(tree))
Dans le modèle :
var tree = {{ tree|safe }};
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!