根据状态码展示错误信息时仅控制台输出、客户端不显示问题求助
问题根因
你的状态码判断逻辑存在运算符优先级错误:
!res.status === 200会优先执行!res.status运算,只要res.status是不为0的数值,运算结果都是false,最终false === 200永远不成立,错误分支永远不会触发,所以就算接口返回非200状态码也不会弹出错误提示。
修复方法
把判断条件改为res.status !== 200即可,同时建议补充请求异常捕获逻辑,避免网络错误、请求超时等场景没有提示:
const submitFormData = (evt) => { evt.preventDefault() Swal.fire({ title: '确认要发布岗位吗?', text: "发布后无法撤销!", icon: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: '确认发布' }).then(async (result) => { if (result.isConfirmed) { try { const res = await companyJobPost(input) console.log("响应结果", res) // 修正状态码判断逻辑 if (res.status !== 200) { alert("岗位ID必须唯一") return } alert("岗位发布成功") } catch (err) { // 捕获请求异常 console.error("请求出错:", err) alert("请求失败,请稍后重试") } } }) }
如果你的业务错误是在接口返回200状态码的前提下,通过响应体data里的字段标识的,还可以补充对应业务逻辑判断:
if (res.status !== 200 || res.data?.error) { alert(res.data?.errorMsg || "岗位ID必须唯一") return }
内容的提问来源于stack exchange,提问作者Zaka awan
相关产品推荐
相关产品推荐

