一部のコンテキスト データを JavaScript コードに渡すには、JavaScript (つまり JSON) が「理解」できる方法でデータをシリアル化する必要があります。safe
また、データが html エスケープされないように、Jinja フィルターを使用して安全であるとマークする必要があります。
次のようなことを行うことで、これを達成できます。
景色
import json
@app.route('/')
def my_view():
data = [1, 'foo']
return render_template('index.html', data=json.dumps(data))
テンプレート
<script type="text/javascript">
function test_func(data) {
console.log(data);
}
test_func({{ data|safe }})
</script>
編集 - 正確な答え
したがって、目的を正確に達成するには (アイテムのリストをループして、それらを JavaScript 関数に渡す)、リスト内のすべてのアイテムを個別にシリアル化する必要があります。コードは次のようになります。
景色
import json
@app.route('/')
def my_view():
data = [1, "foo"]
return render_template('index.html', data=map(json.dumps, data))
テンプレート
{% for item in data %}
<span onclick=someFunction({{ item|safe }});>{{ item }}</span>
{% endfor %}
編集 2
私の例では、 を使用Flask
しています。使用しているフレームワークはわかりませんが、アイデアはわかりました。使用するフレームワークに合わせてください。
編集 3 (セキュリティ警告)
ユーザー提供のデータに対しては絶対にこれを行わないでください。信頼できるデータに対してのみ行ってください。
そうしないと、アプリケーションが XSS の脆弱性にさらされることになります。