Проблема с сохранением выбранного значения в форме после перезагрузки страницы - PullRequest
0 голосов
/ 16 августа 2010

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

С уважением.

1 Ответ

0 голосов
/ 16 августа 2010

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

<option selected>1</option>

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

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

и т. Д.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...