ホームページ > ウェブフロントエンド > jsチュートリアル > Jinja でレンダリングされた JSON データを解析する際の JavaScript 構文エラーを修正する方法

Jinja でレンダリングされた JSON データを解析する際の JavaScript 構文エラーを修正する方法

Susan Sarandon
リリース: 2024-12-25 16:33:20
オリジナル
364 人が閲覧しました

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

Jinja でレンダリングされたデータの JavaScript 構文エラー

問題: でレンダリングされた JSON データを解析しようとしたときJavaScript を使用した Jinja HTML テンプレートで、予期しない '&' を示す SyntaxError が発生しましたtoken.

原因: Flask の Jinja 環境は、セキュリティ上の理由から、HTML テンプレートでレンダリングされたデータを自動的にエスケープします。これは、JSON オブジェクトを JavaScript に渡すときに、エスケープ文字が解析を妨げるため問題になります。

解決策: Flask の tojson フィルターまたはマークアップを使用して、データを安全としてマークします

この問題を解決するには、データを JSON にダンプし、JSON 内でレンダリングしても安全であるとマークする Flask の tojson フィルターを利用します。 JavaScript.

return render_template("template.html", data=tree|tojson)
ログイン後にコピー

代替アプローチ:

  • 安全フィルター (非推奨): このフィルターは非推奨ですが、データを次のようにマークします。 JSONなしでも安全変換。
var data = {{ tree|safe }};
ログイン後にコピー
  • マークアップ ラッパー: レンダリング前に JSON 文字列をマークアップでラップすることは、安全なフィルターと同等です。
return render_template("template.html", data=Markup(json.dumps(tree)))
ログイン後にコピー

直接の Python データ使用法:

レンダリングされたデータが JavaScript 用ではない場合は、JSON 変換やフィルターを使用せずに Python データを直接渡すことを検討してください。

return render_template("template.html", data=tree)
ログイン後にコピー

実装:

神社にてtemplate:

var data = {{ data }};

for (i in obj) {
   document.write(obj[i].text + "<br />");
}
ログイン後にコピー

あるいは、Jinja データを JavaScript 解析せずに直接利用することもできます:

{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}
ログイン後にコピー

以上がJinja でレンダリングされた JSON データを解析する際の JavaScript 構文エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート