场域手记
NEXTFIELD / FIELD NOTESI — 工程
CHAPTER 01 / WRITINGFIELD NOTE 12

空数据和请求失败不是一回事

列表为空可能是正常结果,也可能是接口根本没有返回。把成功、空结果和失败分开表达,才能避免用零值掩盖真正的问题。

工程2026-10-102 分钟阅读

向下阅读

一个页面显示“暂无数据”时,访客通常会理解为:请求已经成功,只是当前没有记录。但如果请求其实失败了,这句文案就把系统的故障伪装成了业务结果。

两种情况看起来都没有内容,含义却完全不同。一次成功的空查询可以展示空状态和下一步操作;一次失败的请求应该说明暂时无法读取,并提供重试入口。将它们合并成同一个空数组,会让前端失去区分二者的依据。

让结果状态成为数据的一部分

处理接口时,可以先按生命周期区分状态:正在加载、成功且有数据、成功但为空、请求失败。页面根据状态决定显示图表、空提示、加载反馈或错误信息。这样,“0 条记录”只会出现在接口确实成功并且结果为空的时候。

统计数字尤其容易造成误会。把请求失败后的访问量填成零,会让人以为网站没有流量;把留言读取失败呈现成“这里还没有留言”,则可能让作者误以为内容被删除。数字和空状态看起来简洁,却不该取代连接状态。

错误要能指导下一步

错误消息不必暴露服务器内部细节,也不应把令牌、SQL 或上游响应原文直接发给访客。它可以说明当前动作没有完成,提供重试,并让维护者通过经过筛选的日志区分网络超时、权限拒绝和无效数据。

如果上一轮已有数据,产品还可以保留最后一次成功结果,并清楚标注它不是最新值。对用户而言,这通常比突然清空页面更有帮助;但时间戳和状态提示必须一起出现,不能让旧数据冒充实时数据。

空状态与失败状态各有责任

空状态可以帮助用户开始:创建第一条记录、换一个筛选条件,或者了解数据何时会出现。失败状态则需要回应中断:重新加载、检查连接,或稍后再试。它们分别描述“没有结果”和“还不知道结果”,不应共用同一套组件。

当界面能准确地区分这两件事,用户就不必通过猜测来判断数据究竟消失了,还是系统暂时无法读取。错误并不会因此消失,但它终于不再伪装成一个看似正常的数字。