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

如何修复React项目中Axios post请求未发起无响应的问题

Axios 登录请求无响应、无报错、Network无记录排查修复

问题对应代码

onSubmit() {
    this.$q.loading.show();
    this.$axios.post("http://localhost/adminision/api/usermanager/login.php", 
    {
        language: "vi",
        instituteid: this.$store.state.mainState.istituto,
        username: this.username,
        password: this.passwd
    }).then((t => {
        1 == t.data.success ? (this.$store.commit("mainState/setLoginData", t.data.token), this.$store.commit("mainState/setFirstName", t.data.firstName), this.$store.commit("mainState/setLastName", t.data.lastName), this.$store.commit("mainState/setMatrixID", "login"), this.$q.sessionStorage.set("token", t.data.token), this.$router.push({
            path: "/dashboard"
        })) : (this.$q.loading.hide(), this.validatormessage = "Username or password not valid", this.mostraerrori = !0)
    })).catch((t => {
        this.validatormessage = t.response.data.error.description, this.mostraerrori = !0
    }))
},

排查步骤(按优先级从高到低)

  • 先确认onSubmit方法是否真的被触发
    在方法第一行加断点或者console.log('submit run'),点击提交按钮看是否命中。如果没触发,问题和axios无关,检查表单绑定:
    • Quasar的q-form组件必须绑定@submit.prevent="onSubmit",漏写.prevent会触发原生表单默认提交,导致页面刚要发请求就被重载,Network面板不会留下记录。
    • 检查提交按钮是否加了type="submit",如果是按钮直接绑定@click触发方法,检查有没有拼写错误(比如把onSubmit写成onSumbit),Vue2下自定义组件绑定事件漏写.native修饰符也会导致事件不触发。
  • 检查axios请求拦截器逻辑
    全局找axios初始化的代码,查看request拦截器:如果拦截器逻辑中任意分支没有return config,请求会直接卡在拦截器阶段,不会发出也不会抛错。典型错误写法:
    // 错误示例:拦截器漏写return config,请求直接挂起
    axios.interceptors.request.use(config => {
      const token = localStorage.getItem('token')
      if(token) config.headers.Authorization = `Bearer ${token}`
      // 这里漏了return config
    })
    
    确保所有request拦截器分支要么返回config,要么返回Promise.reject()抛出明确错误。
  • 检查是否有本地Mock拦截
    如果项目引入了Mock.js、类似接口拦截工具,且匹配到了当前login接口的路径但没有写返回逻辑,请求会被本地Mock直接截获,不会发送到后端,Network面板也不会有记录。临时注释掉Mock初始化代码再测试即可确认。
  • 检查axios实例是否被异常覆写
    在调用this.$axios.post前打印this.$axios,确认挂载在Vue原型上的是标准axios实例,post方法没有被覆写为空函数,也没有重复注册axios导致实例被覆盖。
  • 排查浏览器插件影响
    广告拦截、隐私防护类插件可能静默拦截带admin、login关键词的请求,不会在控制台报错也不会在Network留记录。开Chrome无痕模式、禁用所有扩展后重试即可排除。
  • 修复现有代码的逻辑缺陷
    现有代码存在两个容易吞掉错误的问题,先修正再调试:
    1. loading状态只在请求失败分支关闭,请求成功跳转、请求挂起时都会导致loading异常,应该把hide逻辑放到finally回调中统一执行。
    2. catch回调直接读取t.response.data.error.description,如果错误是请求未发出、无响应的场景,t.response是undefined,这行代码会直接抛错吞掉原始异常,要加可选链判断。
      修正后的参考代码:
    onSubmit() {
        this.$q.loading.show();
        // 调试阶段加参数日志,确认入参没有undefined等异常
        console.log('登录提交参数', {
            language: "vi",
            instituteid: this.$store.state.mainState.istituto,
            username: this.username,
            password: this.passwd
        })
        this.$axios.post("http://localhost/adminision/api/usermanager/login.php", 
        {
            language: "vi",
            instituteid: this.$store.state.mainState.istituto,
            username: this.username,
            password: this.passwd
        }).then((res => {
            console.log('登录接口响应', res)
            if(res.data.success == 1) {
                this.$store.commit("mainState/setLoginData", res.data.token)
                this.$store.commit("mainState/setFirstName", res.data.firstName)
                this.$store.commit("mainState/setLastName", res.data.lastName)
                this.$store.commit("mainState/setMatrixID", "login")
                this.$q.sessionStorage.set("token", res.data.token)
                this.$router.push({path: "/dashboard"})
            } else {
                this.validatormessage = "Username or password not valid"
                this.mostraerrori = true
            }
        })).catch((err => {
            console.error('登录请求异常', err)
            this.validatormessage = err?.response?.data?.error?.description || err.message || '请求失败,请重试'
            this.mostraerrori = true
        })).finally(() => {
            // 无论成功失败都关闭loading
            this.$q.loading.hide()
        })
    },
    

内容的提问来源于stack exchange,提问作者Hải Vũ Nguyễn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:36:17