重新加载页面后在表单中保留选定值的问题

时间:2010-08-16 07:26:41

标签: php javascript html drop-down-menu get

我正在尝试根据预先选择的下拉列表以动态方式填充第二个下拉列表。 但是,当我在下拉框中选择任何内容时,我已设法编写获取页面重新加载,但重新加载后所选的值未通过。 我关闭了register_globals(并且更喜欢),我正在使用GET函数提交表单。但是,当我尝试在URL中设置值时,我无法使其工作。 示例:dropdown.php?area = 1仍然在下拉框中为我提供一个默认值的值。 我究竟做错了什么?在LAMP服务器上运行。 Apache 2.2,php 5.3。 注意:我发现web wwich上的php代码可以帮助我传递GET变量并选择selectbox中的选项。

这是我的代码:

<html>
<head>
        <SCRIPT language=JavaScript>
        function reload(form)
        {
        var val=form.area.options[form.area.options.selectedIndex].value;
        self.location='dropdown.php?area=' + val ;
        }
      </script>
</head>
</body>
<? @$area=$HTTP_GET_VARS['area']; ?>
        <form action="" method="get">
                <select name="area" id="area" onchange="reload(this.form)">
                        <option>1</option>
                        <option>2</option>
                        <option>3</option>
                </select>
        </form>
</body>
</html>

此外,如果可以使用POST(或等效功能)来完成,那就更好了。

问候。

1 个答案:

答案 0 :(得分:0)

我认为您没有指定在页面加载时应该选择哪个选项。根据$ area的值,您应该添加类似

的内容

<option selected>1</option>

在渲染选项节点时,您可以使用几行PH​​P轻松完成此操作:

<? if $area == 1
       print '<option selected>1</option>';
?>

或者,您可以使用客户端javascript填充第二个组合,从而无需重新加载页面。如果您需要执行一些敏感的服务器端处理来计算第二个组合的值,请在使用jQuery的后台AJAX调用中执行此操作(示例here)。这类事情的回发现在有些不受欢迎和过时了。

关于GET问题,如果提交表单有任何副作用(例如,用户帐户中的状态更改,删除内容,创建新实体)那么它肯定应该是POST。例如,讨论here