Как создать сеанс с использованием JavaScript?
Как создать сеанс в JavaScript
?
Я пробую вот так:
<script type="text/javascript" >
{
Session["controlID"] ="This is my session";
}
</script>
Почему я ищу сессию?
Я делаю запрос для XML с использованием AJAX. Ответ XML, который я хочу сохранить в сеансе, и этот сеанс, я хочу перейти на страницу сервера (.asp). Я хочу написать что-то вроде:
<% response.write session("MySession")%>
Ответы
Ответ 1
Вы можете хранить и читать строковые данные в файле cookie.
Если это идентификатор сеанса, поступающий с сервера, сервер может сгенерировать этот файл cookie. И когда другой запрос отправляется на сервер, cookie тоже придет. Без необходимости ничего делать в браузере.
Однако, если это javascript, который создает идентификатор сеанса. Вы можете создать файл cookie с javascript с помощью функции, например:
function writeCookie(name,value,days) {
var date, expires;
if (days) {
date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires=" + date.toGMTString();
}else{
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/";
}
Затем на каждой странице вам нужен этот идентификатор сеанса, вы можете прочитать файл cookie с помощью функции, например:
function readCookie(name) {
var i, c, ca, nameEQ = name + "=";
ca = document.cookie.split(';');
for(i=0;i < ca.length;i++) {
c = ca[i];
while (c.charAt(0)==' ') {
c = c.substring(1,c.length);
}
if (c.indexOf(nameEQ) == 0) {
return c.substring(nameEQ.length,c.length);
}
}
return '';
}
Функция чтения работает с любой страницы или вкладки того же домена, который ее написал, либо если файл cookie был создан со страницы в javascript или с сервера.
Чтобы сохранить идентификатор:
var sId = 's234543245';
writeCookie('sessionId', sId, 3);
Чтобы прочитать идентификатор:
var sId = readCookie('sessionId')
Ответ 2
Я предполагаю, что вы используете ASP.NET MVC (С#), если нет, то этот ответ не в вашей проблеме.
Невозможно ли назначить значения сеанса непосредственно через javascript? Нет, есть способ сделать это.
Посмотрите еще раз свой код:
<script type="text/javascript" >
{
Session["controlID"] ="This is my session";
}
</script>
Немного изменится:
<script type="text/javascript" >
{
<%Session["controlID"] = "This is my session";%>
}
</script>
Создан сеанс "controlID", но как насчет значения сеанса? является постоянным или может меняться через javascript?
Давайте немного изменим:
<script type="text/javascript" >
{
var strTest = "This is my session";
<%Session["controlID"] = "'+ strTest +'";%>
}
</script>
Сессия создается, но значение внутри сеанса будет "+ strTest +", но не "This is my session". Если вы попытаетесь записать переменную непосредственно в код сервера, например:
<%Session["controlID"] = strTest;%>
Затем на вашей странице появится сообщение "В текущем контексте нет параметра strTest...". До сих пор по-прежнему невозможно назначить значения сеанса непосредственно через javascript.
Теперь я перехожу к новому. Использование WebMethod в коде для этого. Посмотрите еще раз свой код с небольшим изменением:
<script type="text/javascript" >
{
var strTest = "This is my session";
PageMethods.CreateSessionViaJavascript(strTest);
}
</script>
На странице с кодом. Я создаю WebMethod:
[System.Web.Services.WebMethod]
public static string CreateSessionViaJavascript(string strTest)
{
Page objp = new Page();
objp.Session["controlID"] = strTest;
return strTest;
}
После вызова веб-метода для создания сеанса из javascript. Сеанс "controlID" будет иметь значение "Это моя сессия".
Если вы используете способ, который я объяснил, добавьте этот блок кода внутри тега формы вашей страницы aspx. Код помогает включить методы страницы.
<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>
Источник: JavaScript - Как установить значения для сеанса в Javascript
Счастливая трещина,
Tri
Ответ 3
Я думаю, что вы неправильно поняли концепцию сеанса, сеанс - это серверная часть для каждого пользователя-хранилища данных, которая позволяет сохранять пользовательские данные на стороне сервера.
Таким образом, у вас есть 2 варианта, прибегайте к использованию файлов cookie, что даст иллюзию сессии (но не совсем то же самое), вы можете получить доступ к куки очень просто с помощью document.cookie.
но если вы хотите, чтобы ваш сервер знал о сеансе, вам нужно использовать какой-либо запрос на сервер, возможно, лучший способ - использовать AJAX для этого.
Я бы рекомендовал вам перечитать определение сеансов.
Ответ 4
Вы можете использовать локальное хранилище.
локальное хранилище такое же, как и сеанс. данные будут удалены при закрытии браузера.
<script>
localStorage.setItem('lastname','Smith');
alert(localStorage.getItem('lastname'));
</script>
Ответ 5
function writeCookie(name,value,days) {
var date, expires;
if (days) {
date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires=" + date.toGMTString();
}else{
expires = "";
}
document.cookie = name + "=" + value + expires + "; path=/";
}
Ответ 6
Вы можете попробовать jstorage javascript plugin, это элегантный способ ведения сеансов
проверьте http://www.jstorage.info/
включить jStorage.js script в ваш html
<script src="jStorage.js"></script>
Затем в вашем javascript введите sessiontoken в ключ, подобный этому
$.jStorage.set("YOUR_KEY",session_id);
Где "YOUR_KEY" - это ключ, с помощью которого вы можете получить доступ к session_id, например:
var id = $.jStorage.get("YOUR_KEY");
Ответ 7
Вы можете использовать sessionStorage, он похож на localStorage, но sessionStorage становится ясным, когда сеанс страницы заканчивается, а localStorage не имеет установленного срока.
См. https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage
Ответ 8
Вы можете использовать name
attr:
<script type="text/javascript" >
{
window.name ="This is my session";
}
</script>
Вам по-прежнему нужно разработать для себя формат для использования или использовать оболочку из уже существующей библиотеки (mootools, Dojo и т.д.).
Вы также можете использовать куки файлы, но они более тяжелы в производительности, поскольку они возвращаются от клиента к серверу и зависят от одного домена.
Ответ 9
Вы можете хранить и читать строковые данные в файле cookie.
Если это идентификатор сеанса, поступающий с сервера, сервер может сгенерировать этот файл cookie. И когда другой запрос отправляется на сервер, cookie тоже придет. Без необходимости ничего делать в браузере.
Однако, если это javascript, который создает идентификатор сеанса. Вы можете создать файл cookie с javascript с помощью функции, например:
Функция чтения работает с любой страницы или вкладки того же домена, который ее написал, либо если файл cookie был создан со страницы в javascript или с сервера.
Ответ 10
Если вы создадите файл cookie и не укажете дату истечения срока действия, он создаст файл cookie сеанса, срок действия которого истечет в конце сеанса.
Подробнее см. fooobar.com/questions/63025/....
Ответ 11
localStorage и jstorage - ваши лучшие ставки. localStorage встроен и jstorage предлагает множество функциональных возможностей
См. поддержка браузера localStorage на caniuse.
Ответ 12
<script type="text/javascript">
function myfunction()
{
var IDSes= "10200";
'<%Session["IDDiv"] = "' + $(this).attr('id') + '"; %>'
'<%Session["IDSes"] = "' + IDSes+ '"; %>';
alert('<%=Session["IDSes"] %>');
}
</script>
ссылка
Ответ 13
Вот что я сделал, и он сработал, создал сеанс в PHP и использовал xmlhhtprequest, чтобы проверить, установлен ли сеанс всякий раз, когда загружается страница HTML, и это работало для Кордовы.
Ответ 14
Использовать локальное хранилище HTML5. вы можете хранить и использовать данные в любое удобное для вас время.
<script>
// Store
localStorage.setItem("lastname", "Smith");
// Retrieve
var data = localStorage.getItem("lastname");
</script>