如何使用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>