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

如何向Flask服务端发送携带两个参数的Fetch请求

问题修复方案

你当前Javascript代码的核心问题是路径参数拼接时缺少分隔斜杠,导致无法匹配Flask定义的路由规则,按以下方式修正即可:

1. 适配现有Flask路由的Javascript代码

var symbol = document.getElementById("stock-symbol").value.trim();
var quantity = document.getElementById("quantity").value.trim();

fetch(`/game/market-simulator/make-sell-request/${symbol}/${quantity}`)
  .then(response => {
    if (!response.ok) throw new Error('请求异常');
    return response.text();
  })
  .then(res => {
    // 此处添加请求成功后的业务逻辑
    console.log('返回结果:', res);
  })
  .catch(err => {
    // 此处添加请求失败后的处理逻辑
    console.error('请求错误:', err);
  });

注意事项

  • 对输入值调用trim()去除首尾空格,避免空格带入路径导致路由匹配失败
  • 若quantity为非合法数字,Flask端会返回sell-page.html,前端可根据返回内容做页面跳转处理
  • 路径参数不可包含/等特殊字符,如有特殊字符需求建议改用POST请求传递参数

2. 推荐优化方案:改用POST请求

卖股票属于数据修改操作,使用POST请求更符合HTTP语义,同时避免路径参数的长度限制和特殊字符问题,对应实现如下:

调整后的Flask代码(可选,原有路由可保留兼容)

@app.route("/game/market-simulator/make-sell-request", methods=["POST"])
def sell_stocks():
    try:
        symbol = str(request.form.get("symbol"))
        quantity = int(request.form.get("quantity"))
    except ValueError:
        return render_template("sell-page.html")
    return symbol, quantity

对应Javascript代码

var symbol = document.getElementById("stock-symbol").value.trim();
var quantity = document.getElementById("quantity").value.trim();

const submitData = new FormData();
submitData.append('symbol', symbol);
submitData.append('quantity', quantity);

fetch('/game/market-simulator/make-sell-request', {
  method: 'POST',
  body: submitData
})
.then(response => response.text())
.then(res => {
  console.log('提交成功:', res);
})
.catch(err => {
  console.error('提交失败:', err);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:54:00