Comment créer une session en utilisant JavaScript?

Comment créer une session en JavaScript ?

J'essaie comme ceci:

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

Pourquoi je cherche une session?

Je demande une demande de XML à l'aide d'AJAX. Réponse XML que je souhaite stocker en session et cette session que je souhaite passer à la page serveur (.asp). Je veux écrire quelque chose comme:

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

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

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

Toutefois, si c'est javascript qui crée l'ID 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 cette Id 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 à partir de n'importe quelle page ou onglet du même domaine qui l'a écrit, que ce soit si le cookie a été créé à partir de la page en javascript ou depuis le serveur.

Pour stocker l'identifiant:

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

Pour lire l'identifiant:

 var sId = readCookie('sessionId') 

Je suppose que vous utilisez ASP.NET MVC (C #), sinon cette réponse n'est pas votre problème.

Est-il impossible d'assigner des valeurs de session directement via JavaScript? Non, il existe un moyen de le faire.

Regardez de nouveau 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 créé, mais qu'en est-il de la valeur de la session? Est-ce persistant ou peut-il être modifié via javascript?

Laissez 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 dans la session sera "'+ strTest +'" mais pas "This is my session". Si vous essayez d'écrire une variable directement dans le code du serveur comme:

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

Ensuite, une erreur se produira dans votre page "Il n'y a pas de paramètre strTest dans le contexte actuel …". Jusqu'à présent, il semble impossible d'assigner des valeurs de session directement via javascript.

Maintenant, je passe à une nouvelle façon. En utilisant WebMethod au code derrière pour faire cela. Regardez de 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 une valeur "This is my session".

Si vous utilisez la façon dont j'ai expliqué, veuillez ajouter ce bloc de code à l'intérieur de la balise de formulaire de votre page aspx. Le code aide à activer les méthodes de la page.

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

Source: JavaScript – Comment définir des valeurs dans Session en Javascript

Happy rabding, Tri

Je pense que vous avez mal compris le concept de session, la session est un serveur côté-utilisateur-data-store qui vous permet de sauvegarder les données utilisateur côté serveur.

Ainsi, vous avez 2 options, utilisez les cookies, ce qui donnera l'illusion de la session (mais pas tout à fait la même), vous pouvez accéder aux cookies simplement par document.cookie.

Mais, si vous voulez que votre serveur soit au courant de la session, vous devez utiliser une sorte de demande de serveur, probablement la meilleure façon d'utiliser AJAX pour le faire.

Je vous recommande de revoir la définition des sessions.

Vous pouvez utiliser le stockage local.

Le stockage local est identique à celui de la session. Les données seront supprimées lorsque vous fermez le navigateur.

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

Vous pouvez essayer jstorage javascript plugin, c'est une manière élégante de maintenir les sessions de vérifier ce http://www.jstorage.info/

Incluez le script jStorage.js dans votre html

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

Ensuite, dans votre javascript, placez la session dans la touche a comme celle-ci

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

Où "YOUR_KEY" est la clé à laquelle vous pouvez accéder session_id, comme ceci:

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

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'intervalle d'expiration.

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

Vous pouvez utiliser le name attr:

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

Vous devez encore développer 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 sur les performances, car ils vont et viennent du client vers le serveur et sont spécifiques à un seul domaine.

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

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

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

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

Si vous créez un cookie et ne spécifiez pas 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.

LocalStorage et jstorage sont vos meilleurs paris. LocalStorage est intégré et jstorage offre beaucoup de fonctionnalités

Consultez le support du navigateur localStorage sur caniuse .

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

lien

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

Utilisez le stockage local HTML5. Vous pouvez stocker et utiliser les données lorsque vous souhaitez.

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