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

Vue.js中使用axios.get传递多参数调用API失效如何解决

问题排查

你的代码请求失效核心是URL拼接错误:

  • 你手动在接口地址后拼接了格式错误的残缺查询字符串? subsidiaryId =& contractType=,本身axios的params配置会自动按键值对拼接标准查询参数,你手动加的这部分存在多余空格、参数缺值、连接符位置错误的问题,会和axios自动生成的参数冲突,直接生成非法请求地址。
  • 接口地址字符串被你手动拆成了两行,会引入多余的换行空白字符,导致地址解析失败。
  • 你手动拼接的参数名是contractType,和params里定义的contractTypeId不一致,容易出现后端参数匹配不上的问题。
修正代码

直接删掉URL里手动拼接的错误查询串,只保留接口基础路径即可,参数拼接完全交给axios处理,修正后代码如下:

getData: function (id) {
    let subsidiary = this.$route.query.subsidiaryId;

    axios.get("https://localhost:44391/api/ContractType/ContractTypePhos", {
        params: {
            subsidiaryId: subsidiary,
            contractTypeId: id
        }
    })
    .then((res) => {
        if (res.data == "No Pho Founds") {
            swal(res.data);
            this.showGrid = true;
        } else {
            this.enabledPhos = res.data;
        }
    })
    .catch(err => {
        console.error("请求异常:", err)
    })
}
额外校验点
  • 确认后端接口实际接收的第二个参数名,如果后端要求参数名是contractType而非contractTypeId,把params里对应的键名改成和后端一致即可。
  • 本地调试时打开浏览器F12开发者工具,切到网络面板查看实际发出的请求,正常的请求地址格式应该为https://localhost:44391/api/ContractType/ContractTypePhos?subsidiaryId=实际值&contractTypeId=实际值,同时确认本地44391端口的接口服务正常运行,没有证书拦截、跨域拦截问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:12:15