【问题标题】:Using data from an ajax call in Flask routes在 Flask 路由中使用来自 ajax 调用的数据
【发布时间】:2021-12-28 21:16:55
【问题描述】:

您好,我想在 Flask 路由中使用从 ajax 调用获得的数据。请参阅下面的棕褐色示例。应用程序在 button_val() 中正确获取并打印数据,但不会在 test() 中闪烁任何值:为什么?

提前谢谢你

Flask 应用

from flask import Flask, flash, render_template, request 

class dataStore():
    y = None
data = dataStore()    

app = Flask(__name__)

@app.route('/get_button_val') 
def button_val():
  resp = request.args.get('resp')
  print(f'<-- {resp}')
  data.y = resp
  return resp    

@app.route("/", methods=['GET', 'POST'])
def test():
    if request.method == 'POST':
        if data.y == 11:
            flash('a')
        if data.y == 10:
            flash('b')  
    return render_template('test.html')

if __name__ == '__main__':
    app.run(debug=True)

test.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <script type="text/javascript" src="/static/jquery-3.6.0.min.js"></script>
    </head>

    <body>
        <h2>Buttons via AJAX</h2>
        <button class="button1" data="11">Yes</button>
        <button class="button2" data="10">No</button>
            
        <script>
        $(document).ready(function () {
            $('.button1, .button2').click(function (e) {
                e.preventDefault();
                var val = $(this).attr('data');
                    $.ajax({
                        url: '/get_button_val',
                        data: { resp: val },
                        success: onSuccess,
                        error: onError,
                    });
                });
            });
        </script>

  {% for msg in get_flashed_messages()%}
  <h3>   {{msg}} </h3> 
  {% endfor%}
      
    </body>
</html>

【问题讨论】:

    标签: python ajax flask


    【解决方案1】:

    这是正确的行为。在test 下,只有在对该路由有POST 调用时才会闪烁一个值,而您的代码中没有任何地方有这样的调用。

    您加载页面,这是一个GET。这将返回您的模板并加载您的页面。

    已更新(因为我误读了您的部分代码)

    页面加载后,它会等待用户单击任何按钮,此时会向GET 调用/get_button_val

    【讨论】:

    • 您好,谢谢您的回答。那么,一旦页面加载(并且无需重新加载),我应该怎么做才能刷新这个值?谢谢
    • 暂时忘记代码,想想你的逻辑。您的逻辑是 - 用户输入一个 url (GET),这将加载具有 2 个按钮的页面,每个按钮都有一个值。基于此,你到底为什么要给用户闪一个值,这个值是从哪里来的呢?直接将值显示为页面的一部分会更好吗?你需要先理清你的逻辑,然后代码才会随之而来
    • 谢谢,我使用闪光灯只是为了查看是否获得按钮的值。这个想法是下一个刺激(例如,问题)将由按下哪个按钮来确定 - 一个循环。不幸的是,下一个刺激必须在 Python 中生成。谢谢。
    猜你喜欢
    • 2021-08-14
    • 2018-03-18
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2014-04-24
    相关资源
    最近更新 更多