Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript创建会话?_Javascript_Asp.net_Session - Fatal编程技术网

如何使用JavaScript创建会话?

如何使用JavaScript创建会话?,javascript,asp.net,session,Javascript,Asp.net,Session,如何在JavaScript中创建会话 我试着这样: <script type="text/javascript" > { Session["controlID"] ="This is my session"; } </script> { 会话[“controlID”]=“这是我的会话”; } 我为什么要找会话 我使用AJAX请求XML。要存储在会话中的XML响应,以及要传递到服务器页(.asp)的此会话。我想写一些东西,比如: <% response.wri

如何在
JavaScript
中创建会话

我试着这样:

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

{
会话[“controlID”]=“这是我的会话”;
}
我为什么要找会话

我使用AJAX请求XML。要存储在会话中的XML响应,以及要传递到服务器页(.asp)的此会话。我想写一些东西,比如:

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

您可以使用
名称
属性:

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

{
window.name=“这是我的会话”;
}
您仍然需要为自己开发要使用的格式,或者使用现有库(mootools、Dojo等)中的包装器。

您也可以使用cookie,但它们的性能更高,因为它们从客户端到服务器来回移动,并且特定于一个域。

我认为您误解了会话的概念,会话是服务器端每个用户的数据存储,允许您在服务器端保存用户数据

因此,您有2个选项,求助于使用cookie,这将产生会话的错觉(但不完全相同),您可以通过document.cookie非常简单地访问cookie

但是,如果您想让服务器知道会话,您需要使用某种类型的服务器请求,最好的方法可能是使用AJAX


我建议您重新阅读会话的定义。

您可以在cookie中存储和读取字符串信息

如果是来自服务器的会话id,服务器可以生成此cookie。当另一个请求被发送到服务器时,cookie也会出现。无需在浏览器中执行任何操作

<script> 
localStorage.setItem('lastname','Smith');

alert(localStorage.getItem('lastname'));
</script>
但是,如果是javascript创建会话Id,则可以使用javascript创建cookie,其函数如下:

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=/";
}
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 '';
}
然后,在需要此会话Id的每个页面中,您都可以读取cookie,其功能如下:

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=/";
}
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 '';
}
要读取id,请执行以下操作:

var sId = readCookie('sessionId')

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

是否无法通过javascript直接分配会话值?不,有办法做到这一点

再次查看您的代码:

<script type="text/javascript" >
{
Session["controlID"] ="This is my session";
}
</script> 
调用web方法后,从javascript创建会话。会话“controlID”的值为“这是我的会话”

如果您使用我解释过的方法,那么请在您的aspx页面的表单标签中添加这段代码。代码有助于启用页面方法

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

快乐的编码,
Tri

您可以在cookie中存储和读取字符串信息

如果是来自服务器的会话id,服务器可以生成此cookie。当另一个请求被发送到服务器时,cookie也会出现。无需在浏览器中执行任何操作

<script> 
localStorage.setItem('lastname','Smith');

alert(localStorage.getItem('lastname'));
</script>
但是,如果是javascript创建会话Id,则可以使用javascript创建cookie,其函数如下:

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=/";
}
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中的页面创建的,或者是从服务器创建的,则read函数可以从写入它的同一域的任何页面或选项卡中工作。

您可以使用本地存储

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

<script> 
localStorage.setItem('lastname','Smith');

alert(localStorage.getItem('lastname'));
</script>

setItem('lastname','Smith');
警报(localStorage.getItem('lastname');
编辑:@Naveen下面的评论是正确的。您可以改用会话存储。谢谢


setItem('lastname','Smith');
警报(sessionStorage.getItem('lastname');

如果创建cookie但未指定过期日期,它将创建会话cookie,该会话cookie将在会话结束时过期


有关更多信息,请参阅。

您可以尝试使用jstorage javascript插件,它是维护会话的一种优雅方式 检查这个

将jStorage.js脚本包含到html中

<script src="jStorage.js"></script>
其中“YOUR_KEY”是可以访问会话id的密钥,如下所示:

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

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

<script>
    // Store
    localStorage.setItem("lastname", "Smith");

    // Retrieve
    var data = localStorage.getItem("lastname");

</script>

//贮藏
setItem(“lastname”、“Smith”);
//取回
var data=localStorage.getItem(“lastname”);

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

请参见


函数myfunction()
{
var idsse=“10200”;
''
'';
警报(“”);
}

以下是我所做的工作,它在PHP中创建了一个会话,并使用XMLHHTRequest检查在加载HTML页面时是否设置了会话,它在Cordova中工作

看看你是在考虑服务器端会话,还是只是一个名为session的javascript变量?为什么我要寻找session,我使用ajax请求xml。。我希望存储在会话中的xml响应,我希望将此会话传递到服务器页面(.asp)。这意味着,如果我写下寻找会话的原因,我会使用ajax请求xml。。我希望存储在会话中的xml响应,我希望将此会话传递到服务器页面(.asp)。这意味着,如果我在服务器端写入会话,你不能将“会话”传递给服务器,除非你指的是sessionID,但你仍然需要在服务器上启动会话,你必须指的是cookie,你可以简单地将数据存储在cookie中,然后从那里重新发送,会话不是正确的术语。根据这个->,您可以将session一词解释为也可以在客户端使用的东西。我们不要在这里缩小我们的选择范围。。在我的头脑中,会话(无论是DB会话、事务、web会话)是一系列操作,包括开始和结束。会话cookie没有过期日期,我认为在第一个块中,它应该是这样的,
document.cookie=name+“=”+value+”;expires=“+expires+”;path=/”
@user3526,expires变量已经包含字符串
;expires=
,因此无需再次添加它。干杯,@Mic the document.cookie正在为返回一个空字符串me@ZeeshanAhm
$.jStorage.set("YOUR_KEY",session_id);
var id = $.jStorage.get("YOUR_KEY");
<script>
    // Store
    localStorage.setItem("lastname", "Smith");

    // Retrieve
    var data = localStorage.getItem("lastname");

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