You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将jQuery获取的表单输入值传递给Flask后端处理函数?

问题修复步骤如下

1. 排查404错误

  • 确认{{ url_for('calcprice') }}所在的代码是写在.html文件的<script>标签内的,如果是写在独立的.js文件中,Jinja2模板语法不会被解析,会直接把模板语法当字符串请求,导致404。这种情况直接把请求url替换为固定值/calcprice即可。
  • 打开浏览器开发者工具的「网络」标签,确认请求的目标地址是否为/calcprice,检查拼写、Flask服务端口是否正确。

2. 修正jQuery取值逻辑

你当前使用的option:selected是下拉框<select>组件的取值写法,你的三个输入项都是普通input组件,直接用.val()即可取值,修改fetchdata函数的参数部分:

function fetchdata() {
    $.getJSON({
        type: "GET",
        url: "{{ url_for('calcprice') }}",
        data: {
            'Income': $('#Income').val(),
            'Percent': $('#percent_income').val(),
            'Rate': $("#interest_rate").val(),
        },
        success: function(data){
            console.log(data)
            // 拿到返回的price后可以在这里写渲染到页面的逻辑
        }
    });
}

3. 优化触发逻辑

原绑定整个document的事件范围太宽,容易重复触发,直接绑定三个输入组件的事件即可:

// 替换原有的mouseup、document change绑定代码
$('#Income, #percent_income, #interest_rate').on('input change', fetchdata);

4. 修正Flask路由逻辑

你当前路由直接返回未定义的price变量,且没有返回标准JSON格式,会导致前端解析失败,修正后的参考代码:

from flask import jsonify, request

@app.route('/calcprice', methods=['GET'])
def calcprice():
    # 直接指定参数类型,自动转数值格式
    income = request.args.get('Income', type=float)
    percent = request.args.get('Percent', type=float)
    rate = request.args.get('Rate', type=float)
    
    # 替换为你自己的房价计算逻辑
    if all([income, percent, rate]):
        # 示例计算逻辑,可自行修改
        monthly_pay = income * (percent / 100)
        year_pay = monthly_pay * 12
        # 按30年贷款、利率折算可负担总房价,仅作示例
        price = year_pay * 30 / (rate / 100)
    else:
        price = 0
    # 返回标准JSON格式
    return jsonify(price=price)

内容的提问来源于stack exchange,提问作者Rob Thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:24:01