Какова наилучшая практика передачи переменных с одной HTML-страницы на другую?

StackOverflow https://stackoverflow.com/questions/216536

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

Редактировать:Общий процесс подобен корзине для покупок.Пользователь выберет товар из таблицы, а затем на следующей странице заполнит некоторые данные и затем оформит заказ.

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

Это было полезно?

Решение

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

<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>

Другие советы

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

Лучший метод (имхо) - включить его в URL

href="http://NewPage.htm?var=value";

encodeURIComponent строковое значение

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top