Какова наилучшая практика передачи переменных с одной HTML-страницы на другую?
-
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-страницы на следующую, поскольку область будет определена в контроллере. Если вам не нужно выполнять какую-либо обработку между запросами, я бы предложил использовать скрытое поле формы, чтобы упростить его.