2010-08-16 62 views
0

我试图根据预先选择的下拉列表以动态方式填充第二个下拉列表。 但是,当我在下拉框中选择任何内容时,我已经设法让页面重新加载,但重新加载之后所选的值未传递。 我有register_globals关闭(并倾向于),我使用GET功能提交表单。但是,当我尝试在URL中设置值时,我无法使其工作。 例如:dropdown.php?area = 1在下拉框中仍然给我一个默认值。 我在做什么错?在LAMP服务器上运行。 Apache 2.2,PHP 5.3。 注意:我在网上找到了这个php代码,wwich假设可以帮助我传递GET变量并在选择框中选择选项。在重新加载页面后保留选定值的问题

这是我的代码:

<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(或同等功能)来完成它甚至会更好。

问候。

回答

0

我想你没有指定在页面加载时应该选择哪一个选项。根据$区域的价值,你应该加入类似

<option selected>1</option>

渲染选项节点时,你可以很容易地与一对夫妇PHP的行做到这一点:

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

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

关于GET问题,如果提交表单有任何副作用(例如,状态的改变在用户的帐户,删除的东西,创造一个新的实体),那么它绝对应该是一个POST。例如讨论here

+0

非常感谢!它现在真的在工作! :D 这个问题可以用$ _POST代替吗? – xeet 2010-08-16 10:48:56

+0

@xeet:我不明白为什么不。你必须手动发送使用jQuery或类似的POST请求。 – 2010-08-16 11:01:07

+0

谢谢,我会尝试阅读jQueries :) – xeet 2010-08-16 17:41:42

相关问题