如何使用JavaScript创build会话?

如何在JavaScript创build会话?

我尝试像这样:

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

为什么我要找会话?

我使用AJAX请求XML。 XML响应我想要存储在会话和这个会话中,我想传递给服务器页面(.asp)。 我的意思是写像这样的东西:

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

您可以将string信息存储和读取到cookie中。

如果是来自服务器的会话ID,则服务器可以生成该cookie。 而当另一个请求被发送到服务器的cookie也会来。 无需在浏览器中做任何事情。

但是,如果它是JavaScript创build会话ID。 您可以使用JavaScript创build一个cookie,其function如下:

 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=/"; } 

然后在每一页你需要这个会话ID你可以阅读的cookie,一个像这样的function:

 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 ''; } 

阅读function可以在同一个域的任何页面或标签上写入,如果cookie是从JavaScript页面或服务器创build的。

存储ID:

 var sId = 's234543245'; writeCookie('sessionId', sId, 3); 

阅读ID:

 var sId = readCookie('sessionId') 

我假设你正在使用ASP.NET MVC(C#),如果不是,那么这个答案是不是你的问题。

是不可能直接通过JavaScript分配会话值? 不,有办法做到这一点。

再看看你的代码:

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

有点改变:

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

会话“controlID”已创build,但会话的价值呢? 是持久的或可以通过JavaScript更改?

让更多一点:

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

会话已创build,但会话内的值将是“'+ ​​strTest +'”,但不是“这是我的会话”。 如果您尝试将variables直接写入服务器代码,如:

 <%Session["controlID"] = strTest;%> 

那么在你的页面会出现一个错误“当前上下文中没有参数strTest …”。 直到现在,通过javascript直接分配会话值仍然是不可能的。

现在我转向一种新的方式。 在后面的代码中使用WebMethod来做到这一点。 再看看你的代码有一点改变:

 <script type="text/javascript" > { var strTest = "This is my session"; PageMethods.CreateSessionViaJavascript(strTest); } </script> 

在代码隐藏页面中。 我创build一个WebMethod:

 [System.Web.Services.WebMethod] public static string CreateSessionViaJavascript(string strTest) { Page objp = new Page(); objp.Session["controlID"] = strTest; return strTest; } 

在调用web方法从javascript创build会话之后。 会话“controlID”将有价值“这是我的会议”。

如果您使用我已经解释的方式,那么请在您的aspx页面的表格标签内添加此代码块。 该代码有助于启用页面方法。

 <asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager> 

来源: JavaScript – 如何在Javascript中设置值到会话

快乐的编码,三

我想你误解了session的概念,session是一个服务器端的per-user-data-store,它允许你在服务器端保存用户数据。

因此,你有2个选项,诉诸使用cookies,这将给会议的幻觉(但不完全相同),您可以非常简单地通过document.cookie访问cookie。

但是,如果你想让你的服务器知道会话,你需要使用某种服务器请求,最好的方法是使用AJAX来做到这一点。

我build议你重新阅读会话的定义。

您可以使用本地存储。

本地存储与会话相同。 当您closures浏览器时,数据将被删除。

 <script> localStorage.setItem('lastname','Smith'); alert(localStorage.getItem('lastname')); </script> 
 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=/"; } 

你可以试试jstorage的javascript插件,这是维护会话的一个很好的方法检查这个http://www.jstorage.info/

将jStorage.js脚本包含到您的html中

 <script src="jStorage.js"></script> 

然后在你的JavaScript把sessiontoken放入这样一个键

 $.jStorage.set("YOUR_KEY",session_id); 

其中“YOUR_KEY”是您可以访问session_id的密钥,如下所示:

 var id = $.jStorage.get("YOUR_KEY"); 

你可以使用sessionStorage类似于localStorage,但sessionStorage在页面会话结束时变得清晰,而localStorage没有设置过期。

https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

您可以使用name attr:

 <script type="text/javascript" > { window.name ="This is my session"; } </script> 

您仍然需要为自己开发使用的格式,或者使用已有库(mootools,Dojo等)的包装器。
您也可以使用cookie,但是它们在性能上更为重要,因为它们从客户端到服务器之间来回切换,并且只针对一个域。

您可以将string信息存储和读取到cookie中。

如果是来自服务器的会话ID,则服务器可以生成该cookie。 而当另一个请求被发送到服务器的cookie也会来。 无需在浏览器中做任何事情。

但是,如果它是JavaScript创build会话ID。 您可以使用JavaScript创build一个cookie,其function如下:

阅读function可以在同一个域的任何页面或标签上写入,如果cookie是从JavaScript页面或服务器创build的。

如果您创build了一个cookie并且没有指定到期date,它将创build一个在会话结束时过期的会话cookie。

有关更多信息,请参阅https://stackoverflow.com/a/532660/1901857

localStorage和jstorage是你最好的select。 localStorage内置, jstorage提供了大量的function

请参阅caniuse上的localStorage浏览器支持 。

 <script type="text/javascript"> function myfunction() { var IDSes= "10200"; '<%Session["IDDiv"] = "' + $(this).attr('id') + '"; %>' '<%Session["IDSes"] = "' + IDSes+ '"; %>'; alert('<%=Session["IDSes"] %>'); } </script> 

链接

这是我做了什么,它的工作原理,在PHP中创build一个会话,并使用xmlhhtprequest来检查会话是否设置,每当一个HTML页面加载,它为cordova工作。

使用HTML5本地存储。 您可以随时储存和使用数据。

 <script> // Store localStorage.setItem("lastname", "Smith"); // Retrieve var data = localStorage.getItem("lastname"); </script>