首页 > 解决方案 > 是否可以在 jquery (Flask + Python) 中的 $.get 中使用 $.post

问题描述

我对 Python 中的 Flask 比较陌生。如果我的问题听起来很愚蠢,请多多包涵。

我有一个GET像下面这样的功能:

@app.route('/transactions', methods=['GET','POST'])
def get_transactions():
    ...

我在 html 上有一个文本框(#transaction_year),我需要在上述函数中使用该输入(作为 $.post)。上面的函数是通过下面的 JQuery 调用的


$('#get-transactions-btn').on('click', function (e) {
        $.get('/transactions', function (data) {
          ....
});
});

问题是当按钮 (get-transactions-btn) 被点击时,函数 (get_transactions) 作为 a 运行GET并获取数据。是否可以在执行 $.get 之前执行类似下面的操作来运行 $.post 并且仍然具有输入文本框 (#transaction_year) 中的值?


$('#get-transactions-btn').on('click', function (e) {
        $.get('/transactions', function (data) {
          var transaction_year = $("#transaction_year").val();
          $.post("/transactions", { transaction_year: transaction_year })
          ....
});
});

这样我就可以在我的函数中使用它,如下所示?

@app.route('/transactions', methods=['GET','POST'])
def get_transactions():
    # Store the value from post here
    transaction_year = float(request.form['transaction_year'])
    ...

谢谢并感谢任何反馈。

标签: pythonjqueryflask

解决方案


我已经设法解决这个问题。我创建了一个单独的函数来将 $.post 值存储在全局变量 input_year 中。

input_year = 1
@app.route('/transactions_input', methods=['POST'])
def get_transactions_input():
    global input_year
    transaction_year = float(request.form['transaction_year'])

    input_year = transaction_year

    return 'Done'

将 JQuery 更新为以下内容:

 $('#get-transactions-btn').on('click', function (e) {
        var transaction_year = $("#transaction_year").val();
        $.post("/transactions_input", { transaction_year: transaction_year }) 
        $.get('/transactions', function (data) {
        ....
});
});

全局变量设置输入框的值,可以在里面使用/transactions


推荐阅读