H1.16.4partial form submit success and failure scope设计研究

部分字段提交失败时需清楚区分成功与失败的范围

别名: 部分提交失败 · mixed success form · 哪些已保存

概念解释

一次提交里,有的字段已经落到服务器,有的被拒(附件超限、某一栏校验失败、某一路服务超时)。区分成功与失败的范围指结果必须列出:哪些已经生效、哪些没有、对没有的那些下一步是重试还是改完再送。一条笼统的「提交失败」会让人把已经成功的部分再送一次,或以为全部都没成而放弃已经生效的那些。批量操作里逐项成败是另一族的问题;这里是同一张表里字段级的混合结果。整表成功确认、等待进度、成功页下一步,都假定结果是单一的。

机制

人把一次点击当成一次原子事务。服务端若不是事务,界面却按原子失败来写,模型就错了。已经生效的邮箱变更、已经上传的附件,再「全部重来」会复制或冲突。第二层是范围要用对象名而不是状态色:写「头像已更新;简历上传失败,职位申请未发送」比整页红条有用。失败项要带着原因和单独动作(换文件重试、先保存资料稍后再申请),成功项要变成只读或带「已保存」以免被当成还要改。若技术上其实整表回滚了,也必须说「全部未生效」,不能表面上像部分成功。范围撒谎比没有范围更糟。

怎么研究

构造混合结果:资料保存成功、附件失败、主记录未创建。比较「一条失败句」「分项列出」「把已成功的再露成可编辑」。

自变量:结果是分项还是笼统、已成功项是否仍可编辑、失败项是否可单独重试。 因变量:对已成功部分再提交的次数、放弃已成功部分、能否正确说出哪些已生效、单独重试是否只打失败通道。

实验室里要提供真实的「已生效」证据(刷新后头像还在)。不要用整表事务的失败来测这条——那不是部分失败。

边界

真正的原子事务失败应说全部未生效,不要为了「看起来细致」编造分项。支付扣款成功但订单未写,范围涉及钱,必须把扣款当已成功项并给出查询/退回,而不是当成普通字段失败。离线队列里「部分已入队、部分因校验未入队」也要分范围,只是生效发生在联网之后。屏幕阅读器要能按项听到成功/失败,不能只靠颜色分栏。

怎么落地

  • 混合结果用清单列出每一块:已生效 / 未生效 / 原因;已生效的不再作为可提交字段出现。
  • 失败块给单独重试或「只改这一块再送」,不要用整表提交按钮当唯一出口。
  • 若实际整表回滚,标题就写全部未生效,清单里不要出现「已保存」的行。
  • 验证:头像成功、简历失败,刷新后头像仍在,界面写明简历未生效。人不得被引导再上传头像。阅读器逐项听到两块的状态。做整表回滚却显示「部分成功」的对照,作为必须拦住的撒谎范围。

延伸

  • 同组H1.16.1 提交成功需要明确的确认反馈,而非静默跳转 · H1.16.2 长时间处理需要进度指示,避免用户重复提交 · H1.16.3 提交结果页面需说明后续可执行的操作
  • 相邻H3.13 部分失败的处置 · H7.13 支付失败与状态未知 · I3.05 幂等与重复提交
  • 站内检索partial success · mixed result · submit scope

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/H1.16.4