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

使用axios向服务端发送请求后如何正确校验请求状态?

问题根因

你遇到的首次空提交打印no errors、填值提交无输出的问题,核心是两个逻辑错误:

  • 错误标记变量的作用域设置不当,若使用外层作用域的变量存储单次请求的错误状态,多次请求的状态会互相覆盖,导致判断失准
  • finally块的执行时机与异步请求的状态更新逻辑时序不匹配,你之前的写法没有在请求的成功/失败回调中正确同步错误状态到判断逻辑中

修复方案

不要使用外层作用域的变量存储单次请求的错误状态,直接在单次请求的逻辑内部定义错误标记,参考代码如下:

const submitForm = async (formData) => {
  let isRequestError = false
  try {
    // 发送表单提交请求
    await axios.post('/你的提交接口地址', formData)
    // 提交成功后可按需调用/getUser接口获取已提交数据做校验
    // const submitResult = await axios.get('/getUser')
  } catch (err) {
    // 空表单提交触发服务端错误时会进入该分支
    isRequestError = true
    console.error('请求错误:', err.response?.data || err.message)
  } finally {
    // 按错误状态执行对应逻辑
    if (isRequestError) {
      console.log('存在错误')
      // 错误场景下的自定义逻辑
    } else {
      console.log('no errors')
      // 无错误场景下的自定义逻辑
    }
    // 两次请求之间需要运行的指定函数可放在此处
    runYourCustomFunction()
  }
}

额外说明

如果需要使用/getUser接口的返回值做后续业务处理,把接口调用放在try块的提交请求之后即可,接口返回的内容可以直接在该作用域内使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:48:03