将数据从JavaScript传递到Flask

问题描述:

我知道如何将数据从python的jinja模板传递到javascript,但我想将一个JavaScript变量传递给python。我想在不重新加载页面的情况下执行此操作。那可能吗?将数据从JavaScript传递到Flask

+5

使用AJAX请求? – monkut 2013-03-21 00:22:17

是的,就像monkut说的 - 我相信你想用JSON和Javascript/jQuery。

这将允许允许从客户端到服务器的通信并返回。

我发现最适用的例子在烧瓶中的片段/模式:http://flask.pocoo.org/docs/patterns/jquery/

从您的视图代码创建一个JSON字符串说,jsonData并在神社模板,喜欢写东西

<script type="text/javascript"> 
    var data = {{ jsonData }}; 
</script> 
+1

该OP特别提到,他已经知道如何做到这一点,并希望走向另一个方向。 – pydsigner 2016-06-03 02:19:01

我在我的项目中做了类似的工作,并希望在此分享我的代码。我需要找出哪些帖子被选中,并且我将所选帖子设置为服务器端的全局变量,以便我将其用于以后的比较。这就是我将选定的帖子传递给Javascript的方式。

<a class="label label-primary" onclick="myFunction({{very.id}})" > Compare</a> 

现在从Javascript到烧瓶。

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)}); 

如前所述here,我们需要包括谷歌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> 
+0

你将如何调用页面加载功能,而不是用户单击按钮,然后将数据从JavaScript传递给烧瓶 – 2017-08-19 14:39:20