将数据从javascript传递到Flask

blu*_*ral 12 javascript python jinja2 flask

我知道如何将带有jinja模板的数据从python传递到javascript,但我想将一个javascript变量传递给python.我想在不重新加载页面的情况下这样做.那可能吗?

All*_*son 6

是的,就像 Monkut 说的——我相信你想使用 JSON 和 Javascript/jQuery。

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

我发现的最适用的例子是 Flask 片段/模式:http : //flask.pocoo.org/docs/patterns/jquery/


Waq*_*tho 5

我在项目中做过类似的工作,并希望在这里分享我的代码。我需要找出选中的帖子,并且在服务器端将选中的帖子设置为全局变量,以便将来进行比较。这就是我将所选帖子传递给Javascript的方式。

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

现在从Javascript到Flask。

function myFunction(x) {
        $.getJSON($SCRIPT_ROOT + '/check_selected', {
        post: x
        }, function(data) {
            var response = data.result;
            console.log(response);
            }
        });
}
Run Code Online (Sandbox Code Playgroud)

这就是我使用JSON从flask返回结果的方式。

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)});
Run Code Online (Sandbox Code Playgroud)

如前所述在这里,我们需要包括谷歌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>
Run Code Online (Sandbox Code Playgroud)