我知道如何将带有jinja模板的数据从python传递到javascript,但我想将一个javascript变量传递给python。我想在不重新加载页面的情况下这样做。这可能吗?
答案 0 :(得分:5)
我在项目中做了类似的工作,想在这里分享我的代码。我需要找出选择了哪个帖子,并且我将所选帖子设置为服务器端的全局变量,以便我可以将其用于以后的比较。这就是我将所选帖子传递给Javascript的方式。
<a class="label label-primary" onclick="myFunction({{very.id}})" > Compare</a>
现在从Javascript到Flask。
function myFunction(x) {
$.getJSON($SCRIPT_ROOT + '/check_selected', {
post: x
}, function(data) {
var response = data.result;
console.log(response);
}
});
}
这是我使用JSON从烧瓶返回结果的方法。
import json
@main.route('/check_selected', methods=['GET','POST'])
def check_selected():
global selected
post = request.args.get('post', 0, type=int)
return json.dumps({'selected post': str(post)});
如上所述[{3}},我们需要包含Google AJAX API才能加载jquery:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="{{
url_for('static', filename='jquery.js') }}">\x3C/script>')</script>
答案 1 :(得分:4)
是的,就像monkut说的那样 - 我相信你想要使用JSON和Javascript / jQuery。
这将允许从客户端到服务器的通信再返回。
我发现最适用的例子是Flask片段/模式:http://flask.pocoo.org/docs/patterns/jquery/
答案 2 :(得分:0)
从您的视图代码中创建一个JSON字符串,例如jsonData
,并在您的Jinja模板中,编写类似
<script type="text/javascript">
var data = {{ jsonData }};
</script>