Подтвердить что ты не робот

Как создать сеанс с использованием JavaScript?

Как создать сеанс в JavaScript?

Я пробую вот так:

<script type="text/javascript" >
{
Session["controlID"] ="This is my session";
}
</script> 

Почему я ищу сессию?

Я делаю запрос для XML с использованием AJAX. Ответ XML, который я хочу сохранить в сеансе, и этот сеанс, я хочу перейти на страницу сервера (.asp). Я хочу написать что-то вроде:

<% response.write session("MySession")%>
4b9b3361

Ответ 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/....

Ответ 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>