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

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

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

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

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

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

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

Какого общего процесса вы пытаетесь достичь?

Pistos 19.10.2008 19:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
6
1
13 381
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

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

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

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

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

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

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

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

Ответ принят как подходящий

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

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

Забыл сказать, что кнопка, вызывающая document.myForm.submit (), также может быть вне формы. В самой форме должен быть только type = submit.

extraneon 20.10.2008 08:47

Спасибо всем! Я выберу это решение, так как оно работает хорошо, его легко и просто реализовать.

Kevin 21.10.2008 08:08

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

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

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

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

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