在html中加载页面后,隐藏字段的值将丢失

时间:2011-08-25 12:55:43

标签: javascript html dom

我想要一个场景,我将在特定页面中设置一些隐藏字段的值 然后该页面在服务器上提交(表单提交)。现在,我重定向另一个页面,然后我再次尝试检索我之前设置的值。但是我没有达到设置的值,而是我得到了我在html页面中提供的默认值。 (隐藏字段位于标题页中,这对我网络应用中的所有页面都是通用的。)

我尝试了一个虚拟应用程序,即使在我设置后加载/刷新页面,我也会得到隐藏字段的值。

4 个答案:

答案 0 :(得分:2)

当您将用户重定向到另一个页面时,它变为重新加载。除非您选择为表单设置值(例如通过javascript),否则表单的值是默认值。

以前设置的”的值并不一定与输入相关联,因为每次重新加载页面时,服务器都会再次生成HTML和默认值,浏览器将显示此HTML

此行为正常

此外,如果您想在提交时保留表单的,则可以使用AJAX submitting

答案 1 :(得分:2)

此处的其他答案事实上是正确的(HTML通常不会按照您的要求执行此操作),但您可以采取一些措施使其正常工作。

首先,通常如何工作:为了让第二页获得隐藏字段的正确值,您将在服务器端组件中处理它。听起来您正在重定向到服务器端处理程序中的新页面。使这项工作的最佳方法是让服务器端处理程序处理该值并将其作为参数附加到重定向(可能附加到查询字符串)。然后让一些服务器端代码生成第二个页面,它将处理querystring参数。

以下是纯HTML / javascript实施的解决方法

如果您不能或不会有服务器端进程来生成第二页,您可以使用Javascript将其从查询字符串中拉出来(只需搜索'在javascript中获取查询字符串变量')。

如果您使用javascript,将第一个表单直接设置为第二个页面可能是可行的(尽管可能不太可行),方法是将其设置为action表格method的GET ”。尽管如此,包含服务器端处理程序肯定更好。

答案 2 :(得分:1)

由于HTML是无状态的,因此通过常规HTML无法实现您的尝试。您想要的是将您的值放在sessioncookie中,这样您就可以在每个加载的页面上植入它。默认情况下无法执行此操作。

答案 3 :(得分:1)

您误解了HTTP的工作方式 - 它是无状态

这意味着您请求的每个页面都与之前的页面完全分开。这是隐藏文本框被设置回默认值的原因。

您必须在将值服务器端发送到客户端之前明确设置它。