web-dev-qa-db-fra.com

Comment créer une session en utilisant JavaScript?

Comment créer une session dans JavaScript?

J'essaye comme ça: 

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

Pourquoi je cherche une session? 

Je fais une demande pour XML en utilisant AJAX. Réponse XML que je veux stocker dans la session et cette session que je veux transmettre à la page du serveur (.asp). Je veux dire quelque chose comme:

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

Vous pouvez stocker et lire des informations de chaîne dans un cookie.

S'il s'agit d'un identifiant de session provenant du serveur, le serveur peut générer ce cookie. Et quand une autre demande est envoyée au serveur, le cookie vient aussi. Sans avoir à faire quoi que ce soit dans le navigateur.

Cependant, si c'est le javascript qui crée l'identifiant de session. Vous pouvez créer un cookie avec JavaScript, avec une fonction comme:

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

Ensuite, dans chaque page, vous avez besoin de cet identifiant de session, vous pouvez lire le cookie, avec une fonction comme:

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

La fonction de lecture fonctionne depuis n'importe quelle page ou onglet du même domaine qui l'a écrite, que le cookie ait été créé à partir de la page en javascript ou du serveur.

Pour stocker l'identifiant:

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

Pour lire l'identifiant:

var sId = readCookie('sessionId')
51
Mic

Je suppose que vous utilisez ASP.NET MVC (C #), sinon cette réponse ne figure pas dans votre numéro.

Est-il impossible d'attribuer des valeurs de session directement via javascript? Non, il y a un moyen de faire ça.

Regardez encore votre code:

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

Un peu de changement:

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

La session "controlID" a été créée, mais qu'en est-il de la valeur de session? est-ce persistant ou peut-il être modifié via javascript?

Laisse changer un peu plus:

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

La session est créée, mais la valeur à l'intérieur de la session sera "'+ strTest +'" mais pas "Ceci est ma session". Si vous essayez d'écrire la variable directement dans le code serveur comme:

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

Une erreur se produira alors dans votre page "Il n'y a pas de paramètre strTest dans le contexte actuel ...". Jusqu'à présent, il semble encore impossible d'attribuer les valeurs de session directement via JavaScript.

Maintenant je passe à une nouvelle manière. Utiliser WebMethod à code derrière pour le faire. Regardez à nouveau votre code avec un peu de changement:

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

Dans la page code-behind. Je crée un WebMethod:

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

Après avoir appelé la méthode Web pour créer une session à partir de javascript. La session "controlID" aura la valeur "Ceci est ma session".

Si vous utilisez la manière que j'ai expliquée, ajoutez ce bloc de code à l'intérieur de la balise de formulaire de votre page aspx. Le code aide pour activer les méthodes de page.

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

Source: JavaScript - Comment définir des valeurs pour Session en Javascript

Bonne codding, Tri

11
Tri Nguyen Dung

Je pense que vous avez mal compris le concept de session, session est un magasin de données utilisateur par utilisateur qui vous permet de sauvegarder des données utilisateur côté serveur.

ainsi, vous avez 2 options, utilisez des cookies, ce qui donnera une illusion de session (mais pas tout à fait la même chose), vous pouvez accéder aux cookies très simplement par document.cookie.

mais si vous voulez que votre serveur soit au courant de la session, vous devez utiliser une sorte de requête de serveur. Le meilleur moyen est probablement d'utiliser AJAX pour ce faire.

Je vous recommanderais de relire la définition des sessions.

9
MindFold

Vous pouvez utiliser le stockage local.

le stockage local est identique à la session. les données seront supprimées lorsque vous fermerez le navigateur.

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

alert(localStorage.getItem('lastname'));
</script>
8
Rafael M.
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=/";
}
1
gaurav

Vous pouvez utiliser sessionStorage. Il est similaire à localStorage, mais sessionStorage devient clair lorsque la session de page se termine alors que localStorage n'a pas défini d'expiration.

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

1
Rim Gazzah

Vous pouvez essayer le plugin jstorage pour jstorage, c’est un moyen élégant de maintenir des sessions Check this http://www.jstorage.info/

inclure le script jStorage.js dans votre code HTML

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

Ensuite, dans votre javascript, placez la sessiontoken dans la clé comme ceci

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

Où "YOUR_KEY" est la clé à l'aide de laquelle vous pouvez accéder à votre session_id, comme ceci:

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

Si vous créez un cookie sans spécifier de date d'expiration, il créera un cookie de session qui expirera à la fin de la session.

Voir https://stackoverflow.com/a/532660/1901857 pour plus d'informations.

0
mst

Voici ce que j'ai fait et cela a fonctionné, créé une session dans PHP et utilisé xmlhhtprequest pour vérifier si la session est définie chaque fois qu'une page HTML est chargée et que cela fonctionne pour Cordova. 

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

lien

0
mohammad

Vous pouvez stocker et lire des informations de chaîne dans un cookie.

S'il s'agit d'un identifiant de session provenant du serveur, le serveur peut générer ce cookie. Et quand une autre demande est envoyée au serveur, le cookie vient aussi. Sans avoir à faire quoi que ce soit dans le navigateur.

Cependant, si c'est le javascript qui crée l'identifiant de session. Vous pouvez créer un cookie avec JavaScript, avec une fonction comme:

La fonction de lecture fonctionne depuis n'importe quelle page ou onglet du même domaine qui l'a écrite, que le cookie ait été créé à partir de la page en javascript ou du serveur.

0
Best Dude

Vous pouvez utiliser la name attr: 

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

Vous devez toujours développer vous-même le format à utiliser ou utiliser un wrapper d'une bibliothèque déjà existante (mootools, Dojo, etc.).
Vous pouvez également utiliser des cookies, mais ils sont plus lourds en performances, car ils vont et viennent du client au serveur et sont spécifiques à un domaine.

0
Itay Moav -Malimovka

localStorage et jstorage sont vos meilleurs choix. localStorage est intégré et jstorage offre de nombreuses fonctionnalités

Voir support du navigateur localStorage sur caniuse .

0
user6195279