
引言:多页表单数据传递的挑战
在web开发中,尤其是在构建向导式或分步式的表单流程时,常常需要将用户在某个页面输入或选择的数据传递到后续页面。尽管现代前端框架提供了更高级的单页应用(spa)解决方案,但在传统的多页应用(mpa)架构中,通过url参数或隐藏表单字段来传递数据仍然是一种常见且有效的方法。然而,这种方法也伴随着一个常见问题:如何确保在多步提交过程中,所有历史数据都能被正确地保留并传递到最终页面?本教程将深入探讨这一问题,并提供一个基于javascript和html的实用解决方案。
问题分析:为何数据会在后续页面丢失?
以上述场景为例,用户在第二页输入 email 和选择 testType,然后提交表单,通过 goPThree 函数将这些数据作为URL参数传递到第三页(例如 evalportalv3.html?email=test@example.com&testType=voip)。此时,第三页的URL中包含了这些参数,表明数据已成功传递。
然而,当用户在第三页选择 testTime 并再次提交表单(通过 goPFour 函数)时,却发现 email 和 testType 参数在新的URL中丢失了,只剩下 testTime。这是因为 FormData 对象的工作机制:
const formData = new FormData(event.target);
这行代码会创建一个 FormData 对象,它只会收集 event.target(即当前触发提交事件的









