Я относительно новичок в программировании веб-приложений, поэтому надеюсь, что этот вопрос не для всех слишком простой.
Я создал HTML-страницу с FORM, содержащую таблицу данных dojox (v1.2), заполненную строками описаний различных продуктовых товаров. После того, как пользователь выберет интересующий его элемент, он нажмет кнопку «Отправить».
На этом этапе я могу получить функцию javascript для хранения номера идентификатора элемента в виде переменной javascript, НО я не знаю, как передать этот идентификатор на следующую HTML-страницу.
Должен ли я просто передать идентификатор как параметр строки запроса URL? Есть ли другие способы лучше?
Обновлено: Общий процесс похож на корзину. Пользователь выберет элемент из сетки, а затем на следующей странице пользователь заполнит некоторые детали, а затем оформит заказ.
Я также должен упомянуть, что я использую grails, поэтому это происходит на странице GSP, но в настоящее время она содержит только HTML.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это хорошо, но лучше использовать какой-нибудь язык сценариев, такой как 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.
Спасибо всем! Я выберу это решение, так как оно работает хорошо, его легко и просто реализовать.
Если вам понадобится только идентификатор на последующих страницах, вы можете передать идентификатор в качестве параметра строки запроса.
Но будут моменты, когда вам нужно будет передавать больше информации и передавать различные параметры на разные страницы, а необходимость поддерживать разные наборы параметров для разных страниц может стать немного непосильной. В этом случае я бы посоветовал вам сохранить скрытое поле в форме и создать объект аргумента, который хранит каждый из ваших параметров. Сериализуйте объект аргумента с помощью JSON и сохраните его в скрытом поле. Отправьте форму обратно на сервер. Когда загружается следующая страница, десериализуйте объект и получите нужные вам значения.
Поскольку вы пытаетесь сделать это в приложении Grails, у вас действительно есть выбор использования Flash scope. Это может не иметь никакого смысла, если вы хотите перейти непосредственно с одной HTML-страницы на следующую, поскольку область действия будет определяться в контроллере. Если вам не нужно выполнять какую-либо обработку между запросами, я бы предложил использовать скрытое поле формы, чтобы упростить его.
Какого общего процесса вы пытаетесь достичь?