Как лучше всего передавать переменные с одной HTML-страницы на другую? - PullRequest
6 голосов
/ 19 октября 2008

Я относительно новичок в разработке веб-приложений, поэтому я надеюсь, что этот вопрос не слишком прост для всех.

Я создал HTML-страницу с ФОРМОЙ, содержащей сетку данных dojox (v1.2), заполненную строками описаний для различных продуктовых предметов. После того, как пользователь выберет интересующий его элемент, он нажмет кнопку «Отправить».

На данный момент я могу получить функцию javascript для сохранения идентификатора элемента в качестве переменной javascript, НО я не знаю, как передать этот идентификатор на следующую HTML-страницу.

Должен ли я просто передать идентификатор в качестве параметра строки запроса URL? Есть ли другие лучшие способы?

РЕДАКТИРОВАТЬ: весь процесс похож на корзину. Пользователь выберет элемент из сетки, а затем на следующей странице пользователь заполнит некоторые детали и затем оформит заказ.

Я должен также упомянуть, что я использую grails, так что это происходит на странице GSP, но в настоящее время он содержит только HTML.

Ответы [ 7 ]

4 голосов
/ 19 октября 2008

Вы можете просто использовать скрытое поле ввода; который передается как часть формы.

<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">
      function updateSelectedItemId() {
        document.myForm.selectedItemId.value = 2;
        alert(document.myForm.selectedItemId.value);

       // For you this would place the selected item id in the hidden
       // field in stead of 2, and submit the form in stead of alert
      }
    </script>

    Your grid comes here; it need not be in the form

    <form name="myForm">
      <input type="hidden" name="selectedItemId" value="XXX">
      The submit button must be in the form.
      <input type="button" value="changeSelectedItem" onClick="updateSelectedItemId()">
    </form>
  </body>
</html>
2 голосов
/ 19 октября 2008

Это хорошо, но лучше использовать несколько языков сценариев, таких как JSP, PHP, ASP .... и вы можете использовать простые методы POST и GET.

1 голос
/ 19 октября 2008

Если вам понадобится идентификатор только на последующих страницах, вы можете передать идентификатор в качестве параметра строки запроса.

Но бывают случаи, когда вам нужно передавать больше информации и передавать различные параметры на разные страницы, и необходимость поддерживать разные наборы параметров для разных страниц может стать немного затруднительной. В этом случае я бы посоветовал вам оставить в форме скрытое поле и создать объект аргумента, в котором хранятся все ваши параметры. Сериализуйте объект аргумента с помощью JSON и сохраните его в скрытом поле. Отправьте форму обратно на сервер. При загрузке следующей страницы десериализуйте объект и получите нужные значения.

1 голос
/ 19 октября 2008

Один из способов пересылки переменных с помощью POST на другую страницу - сделать ссылку на следующую страницу отправкой ввода в форме, где атрибутом действия является ваша целевая страница. Для каждой имеющейся у вас переменной вы можете включить в эту форму ввод атрибутов типа «скрытый», делая видимой только кнопку.

Другой вариант - динамически генерировать ссылки на странице с помощью чего-то вроде PHP, где вы в основном заполняете текущие запросы GET.

Наконец, вы всегда можете сохранить эту информацию в массиве PHP $ _SESSION и не беспокоиться о постоянной передаче этих переменных с помощью навигации по сайту.

Ваш выбор будет зависеть от того, сколько вариантов навигации есть, где вы хотите сохранить одни и те же переменные. Это также будет зависеть от того, насколько безопасным будет ваш бэкэнд, и от суммы, которую вы хотите раскрыть опытному веб-пользователю.

1 голос
/ 19 октября 2008

Лучший способ (imho) - включить его в URL

HREF = "http://NewPage.htm переменная = значение?";

encodeUriComponent строка Значение

0 голосов
/ 20 октября 2008

Поскольку вы пытаетесь сделать это в приложении Grails, у вас есть выбор использования области видимости Flash. Это может не иметь никакого смысла, если вы хотите перейти непосредственно с одной HTML-страницы на следующую, поскольку область будет определена в контроллере. Если вам не нужно выполнять какую-либо обработку между запросами, я бы предложил использовать скрытое поле формы, чтобы упростить его.

http://grails.org/Controllers+-+Controller+Scopes

0 голосов
/ 19 октября 2008

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

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