重新加载页面我会丢失表单中的所有值

reload page I lose all values in form

本文关键字:表单 新加载 加载      更新时间:2023-09-26

我制作了一个web表单,其中一些字段是手动输入的,其他字段是下拉列表,还有一些日历字段是javascript格式的。我最近添加的下拉列表是由上一个下拉列表的选定值填充的。当它重新加载表单时,我会丢失以前输入的所有值,并且只将该值保留在一个下拉列表中。我必须捕获所有的值吗?或者有没有一种方法可以在不重新加载表单的情况下填充第二个下拉列表?

-.-一个字。异步传输使用它。

任何时候重新加载表单都将丢失所有未记录的数据周期。

如果必须重新加载页面,请将所有数据保存在cookie或其他文件中。

有一种方法可以在不使用ajax的情况下保存数据,并且不向服务器发送任何内容。它被称为会话存储。

// store item
localStorage.setItem("index", "value");
// retrieve item
var data = localStorage.getItem("index");

因此,您只需在执行任何操作(单击按钮、向下键、鼠标离开…)后使用sessionStorage保存数据,然后在重新加载页面时,您只需要从会话中存储的数据中再次填充页面!

我认为,重新加载表单意味着提交表单,然后返回页面的版本,其中第二个下拉列表根据提交的第一个下拉列表填充。如果是这种情况,您可以考虑隐藏第二个下拉列表的所有可能值,然后在第一个下拉列表中进行选择后用JavaScript填充它。如果可能值的数量非常大,或者必须在服务器端计算(如中所示,您最初无法知道所有值),那么您可以使用AJAX提交表单,避免重新加载整个页面。

检查页面的cache-control。此属性告诉浏览器依赖其自己的缓存来重新加载页面。

这可以设置为元标记。例如:

<meta http-equiv="Cache-control" content="public">

但更好的方法(在我看来)是通过服务器端,使用header()函数。

请注意,有些人在表单时更喜欢将其设置为no-cache,以避免垃圾邮件,同时出于安全考虑。