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

如何在PHP中抛出自定义错误至Axios的.catch方法

如何从PHP向Axios的.catch传递自定义错误

Axios的.catch()分支默认只会在HTTP状态码不在2xx范围内时触发,所以要让自定义错误进入这个分支,PHP需要先返回一个非2xx的状态码,再输出自定义错误信息。

1. 修改PHP代码:设置错误状态码+输出错误JSON

在验证失败的分支里,先用http_response_code()设置一个合适的错误状态码(比如401代表未授权,400代表参数错误),再输出包含自定义错误的JSON:

// 可选:设置响应内容类型为JSON,让前端解析更规范
header('Content-Type: application/json');

if ($username === 'admin' && $password === '123') {
    echo json_encode(['success' => true]);
} else {
    // 设置HTTP错误状态码,触发Axios的catch
    http_response_code(401);
    echo json_encode(['error' => 'Invalid username or password']);
}

2. 修改Axios代码:在catch中获取自定义错误

Axios的错误对象里,error.response.data会包含PHP返回的自定义错误内容,直接读取即可:

axios.post('login.php', { username, password })
    .then(response => {
        console.log(response.data);
        // 处理登录成功逻辑
    })
    .catch(error => {
        // 优先获取PHP返回的自定义错误
        if (error.response) {
            console.error('登录失败:', error.response.data.error);
        } else {
            // 处理请求本身失败的情况(比如网络错误)
            console.error('请求出错:', error.message);
        }
    });

补充说明

  • 状态码可以根据场景选择:400(参数格式错误)、403(权限不足)、404(接口不存在)等,只要是非2xx的状态码都能触发Axios的catch。
  • 务必确保PHP输出的是合法JSON格式,否则前端解析会出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:42:04