如何使用javascript将javascript变量设置为flask模板变量

时间:2015-07-05 17:47:14

标签: javascript python flask

我想在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中设置模板变量的方法是什么?

3 个答案:

答案 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布尔值。