У меня есть код Python, в котором я использую jinja для отправки данных в шаблон в Flask. Я могу получить доступ к коду, просто найти в HTML, но когда я пытаюсь отображать данные в Javascript, он не работает. Например, вот мой код Python:Использование jinja для отправки данных на Javascript
name = "Steve"
return render_template('simple.html',data=json.dumps(name))
И в моем simple.html код в HTML тело:
<script>
var name = {{ data }};
alert(name);
</script>
Ошибка в моей консоли говорит «SyntaxError: Неожиданный маркер '&' "
Я знаю, что я видел эту проблему раньше, я забываю, как ее решить.
Поскольку корректный JSON является действительным JS вы можете пропустить 'JSON.parse' шаг полностью и просто сделать 'var data = {{данные | tojson}}; –
Выполнение этого не только делает код более безопасным, но и анализирует строку json для объекта JS. И объект JS больше равен dict в python. – aGuegu
Когда объект JSON выписывается в блоке сценария (так же, как вы делаете 'var data = {{data | tojson}}'), он будет интерпретироваться браузером как JavaScript. Поскольку JSON является подмножеством JavaScript, «JSON», который был записан в блок сценария, будет интерпретироваться как обычный объект JavaScript браузером (поскольку JSON - это только данные, это безопасно, а не для записи любого пользователя -provided string в блок сценария, что небезопасно). Передача «JSON» в виде строки JavaScript в 'JSON.parse' просто добавляет лишний ненужный шаг. Имеет ли это смысл? –