Python 将数据从 javascript 传递到 Flask

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15537254/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-18 20:21:50  来源:igfitidea点击:

Passing data from javascript into Flask

javascriptpythonflaskjinja2

提问by blueintegral

I know how to pass data with a jinja template from python into javascript, but I want to pass a javascript variable into python. I'd like to do it without reloading the page. Is that possible?

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

采纳答案by Allan Anderson

Yes, like monkut said--I believe you want to use JSON and Javascript/jQuery.

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

This will let allow communication from client to server and back again.

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

The most applicable example I found was in the Flask snippets/patterns: http://flask.pocoo.org/docs/patterns/jquery/

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

回答by abc def foo bar

Create a JSON string from your view code say, jsonDataand in your Jinja Template, write something like

从您的视图代码创建一个 JSON 字符串,例如,jsonData在您的 Jinja 模板中,编写类似

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

回答by Waqar Detho

I did a similar kind of work in my project and would like to share my code here. I need to find out which post is selected and I was setting the selected post as a global variable at server side, so that I may use it for later comparison. This is how I pass my selected post into Javascript.

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

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

Now from Javascript to Flask.

现在从 Javascript 到 Flask。

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

This is how I return the result from flask by using JSON.

这就是我使用 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)});

As mentioned here, we need to include Google AJAX API in order to load jquery:

正如这里提到的,我们需要包含 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>