我想在javascript中将javascript变量值设置为flask模板变量。我正在尝试的是
$(document).on("click", ".prepopulate", function () {
var myBookId = $(this).data('id');
alert(myBookId); // The value is showing proper
{% set tempVar = 'myBookId' %}
alert ({{tempVar}})
});
但是它给出了一个错误(UndefinedError:'list object'没有属性'myBookId')。使用javascript变量在javascript中设置模板变量的方法是什么?
答案 0 :(得分:0)
你想这样使用set
:
%SET{"tempVar" value="myBookId"}%
答案 1 :(得分:0)
你不能这样做,因为jinja在页面加载之前和服务器端运行,但javascript代码在页面加载时执行,在客户端(浏览器)执行,因此你的myBookId
变量没有。为jinja存在(有关详细信息,请参阅this答案)。实现目标的方法是使用ajax
。请参阅here示例。
答案 2 :(得分:0)
如果您查看渲染的HTML,您会看到
alert (myBookId)
除非您定义名为myBookId
的变量,否则这不是有效的JavaScript。您需要将字符串值包装在引号中。
alert('{{ myBookId }}')
更好的方法是让Jinja为您决定是否需要报价。
alert({{ myBookId|tojson|safe }})
这将在字符串中包装字符串值,单独保留整数,并使用JavaScript布尔值。