2010-08-16 97 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

相關問題