Javascript и переменные сеанса
-
02-07-2019 - |
Вопрос
У меня есть база данных, в которой хранятся события, и страница с объектом календаря.При рендеринге дней он просматривает события месяцев и, если какие-либо из них соответствуют отображаемому текущему дню, создает кнопку ссылки, представляющую событие в этот день в календаре, и добавляет его в эту ячейку.Я добавляю Javascript к кнопке ссылки, чтобы изменить window.location на страницу для просмотра подробностей о событии, передавая EventID в строке запроса (я пытался установить postbackurl для вновь созданной кнопки ссылки, но это не вызывало обратной передачи...не повезло).Мне нужно установить переменную сеанса, т.е.Session("EditMode") = "Edit" То есть новая страница будет знать, что ей нужно получить информацию о существующем событии, а не готовиться к созданию нового события?Какие-либо предложения?
Решение
Ваши сеанса управляются сервером, JS запускает сторону клиента, и поэтому не может изменить VARS напрямую.
Вам необходимо сделать запросы на сервер, используя post или get и hidden iframes, или xmlhttprequest () вызовы для отправки данных с JS на сервер, а затем обрабатывать код вашего сервера.
Добавьте еще одну переменную строки запроса, которую страница может использовать для переключения между существующими и новыми.
Другие советы
Добавьте еще одну переменную строки запроса, которую страница может использовать для переключения между существующими и новыми.
Если вы используете что-то вроде Struts2, вы можете иметь скрытую переменную в своем jsp.
<s:hidden id="EditModeId" value="%{#session.EditMode}"/>
И внутри javascript просто получите доступ к этой переменной
alert(document.getElementById('EditModeId').value);
Вам обязательно нужно добавить переменную на целевую страницу.Но я так понимаю, что вы выполняете сценарий всплывающего окна, поэтому у вас должна быть возможность создать javascript-функцию OpenWindow() и запускать ее, когда пользователь нажимает ссылку.
<script>
function OpenWindow(eventId, editMode)
{
var window = window.open("popup.aspx?eventId=" + eventId + "&editMode=" + editMode);
}
</script>
На стороне сервера вам нужно построить вызов функции OpenWindow.Например:
onclick="OpenWindow(eventId=" + row["eventId"].ToString() + "&editMode=" + editMode.ToString() + ");"
Другими словами, подготовьте все на стороне сервера, чтобы настроить JavaScript для публикации всех переменных на новой странице.Надеюсь это поможет.
var page1 = document.getElementById("textbox").value;
sessionStorage.setItem("page1content", page1);
на другой странице используйте это значение как переменную сеанса
document.getElementById("textbox2").value=sessionStorage.getItem("page1content");