2010-08-16 1 views
0

Я пытаюсь заполнить второе выпадающее меню динамическим способом на основе выбранного выпадающего списка. Однако мне удалось написать, чтобы страница перезагрузилась, когда я выбираю что-либо в раскрывающемся списке, но выбранное значение не передается после перезагрузки. У меня есть register_globals отключен (и предпочитает), и я использую функцию GET для отправки формы. Однако, когда я пытаюсь установить значения в URL-адресе, я не могу заставить его работать. Пример: dropdown.php? Area = 1 все равно дает мне значение в раскрывающемся списке со значением по умолчанию. Что я делаю неправильно? Работает на сервере LAMP. Apache 2.2, php 5.3. Примечание. Я нашел 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 (или эквивалентной функции) было бы еще лучше.

С уважением.

ответ

0

Я думаю, вы не указали где бы ни был выбран один из вариантов при загрузке страницы. В зависимости от значения $ области, вы должны добавить что-то вроде

<option selected>1</option>

Вы можете легко сделать это с помощью нескольких строк PHP при визуализации опционных узлов:

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

и т.д.

В качестве альтернативы, вы можете просто заполнить вторую комбинацию с помощью клиентского javascript, устраняя необходимость перезагрузки страницы. Если вам нужно сделать некоторую конфиденциальную обработку на стороне сервера, чтобы вычислить значение второго комбо, сделайте это в фоновом вызове AJAX, используя jQuery (примеры here). В эти дни обратные платежи такого рода вроде бы нежелательны и старомодны.

Что касается вопроса GET, то при отправке формы есть какие-либо побочные эффекты (например, изменение состояния в учетной записи пользователя, удаление чего-либо, создание нового объекта), тогда это определенно будет POST. Обсуждение here например.

+0

Спасибо большое! Теперь он работает! : D Вопрос, возможно ли это сделать с $ _POST? – xeet

+0

@xeet: Я не понимаю, почему нет. Вам придется вручную отправить запрос POST, используя jQuery или аналогичный. –

+0

Спасибо, я постараюсь прочитать на jQueries :) – xeet