一份 30 题的问卷,用户填到第 18 题刷新,回到第 1 题答案全空,客服一周收到 9 起同样的投诉。日志里能对上时间点,这种反而好排。
答案只存在前端变量里,没有落 localStorage,也没有草稿接口。刷新页面等于重新初始化。这一点先确认清楚,后面就不用反复试。
localStorage.setItem('survey_draft_' + id, JSON.stringify(answers));
// 提交成功后 localStorage.removeItem(...)
这次卡住的地方就在「问卷进度保存」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。同一份配置存在多处的,先确认改的是被加载的那一份。
新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
处理上按这个顺序:每题变化后写一次 localStorage,key 用问卷 ID 加版本号;进入页面先读草稿回填,超过 7 天的草稿丢掉;提交成功后清掉草稿,避免下次带出旧答案。
结果对不对很好判断,填到第 18 题刷新,答案全部回填,提交成功后重新进入是空白。
