Comment créer une session en utilisant JavaScript?
comment créer session dans JavaScript
?
j'essaie comme ceci:
<script type="text/javascript" >
{
Session["controlID"] ="This is my session";
}
</script>
pourquoi je cherche session?
je fais une demande pour XML en utilisant AJAX. Réponse XML je veux stocker en session et cette session je veux passer à la page du serveur(.ASP.) Je veux dire écrire quelque chose comme:
<% response.write session("MySession")%>
14 réponses
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 lorsqu'une autre requête est envoyée au serveur le cookie va venir aussi. Sans avoir à faire quoi que ce soit dans le navigateur.
cependant 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=/";
}
puis en chaque page dont vous avez besoin de cet 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 écrite, soit si le cookie a été créé à partir de la page en javascript, soit à partir du serveur.
pour conserver la carte d'identité:
var sId = 's234543245';
writeCookie('sessionId', sId, 3);
pour lire l'id:
var sId = readCookie('sessionId')
je suppose que vous êtes en utilisant ASP.NET MVC (C#), si non, alors cette réponse n'est pas dans votre question.
est-il impossible d'attribuer des valeurs de session directement par javascript? Non, il y a un moyen de le faire.
regardez à 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 session? est-ce persistant ou peut changer via javascript?
Laissez changement 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 "C'est ma session". Si vous essayez d'écrire la variable directement dans le code du serveur comme:
<%Session["controlID"] = strTest;%>
alors 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 toujours impossible d'attribuer des valeurs de session directement à travers JavaScript.
maintenant je change de voie. Utiliser WebMethod à code behind pour faire cela. Regardez à nouveau votre code avec un peu de changement:
<script type="text/javascript" >
{
var strTest = "This is my session";
PageMethods.CreateSessionViaJavascript(strTest);
}
</script>
en code-derrière la page. Je crée une Webméthode:
[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 "C'est ma session".
si vous utilisez la façon dont je l'ai expliqué, alors s'il Vous Plaît ajouter ce bloc de code dans l'étiquette de formulaire de votre page aspx. Le code aide à 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 les valeurs de Session en Javascript
Heureux codding, Tri
je pense que vous avez mal compris le concept de session, session est un côté serveur par-utilisateur-data-store qui vous permet d'enregistrer des données utilisateur sur le côté serveur.
ainsi, vous avez 2 options, recours à des cookies, qui donneront l'illusion de session(mais pas tout à fait la même), 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 probablement le la meilleure façon est D'utiliser AJAX pour le faire.
je vous recommande de relire la définition de sessions.
vous pouvez utiliser le stockage Local.
stockage local identique à session. les données seront supprimés 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 façon élégante de maintenir des sessions vérifier ce qui suit: http://www.jstorage.info /
comprennent les jStorage.js script dans votre html
<script src="jStorage.js"></script>
alors dans votre javascript placez la session dans la clé a 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");
Vous pouvez utiliser sessionStorage il est semblable à localStorage mais sessionStorage devient clair lorsque la page en fin de session, alors que localStorage a aucune date d'expiration définie.
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 avez encore à développer pour vous-même le format à utiliser, ou utiliser un wrapper à partir 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 au serveur, et sont spécifiques à un domaine.
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 lorsqu'une autre requête est envoyée au serveur le cookie va venir aussi. Sans avoir à faire quoi que ce soit dans le navigateur.
cependant 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 de travail à partir de n'importe quelle page ou l'onglet du même domaine que l'a écrit, si le cookie a été créé à partir de la page en javascript ou du 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'information.
localStorage et jstorage sont vos meilleurs paris. jstorage offre beaucoup de fonctionnalites
voici ce que j'ai fait et cela a fonctionné, créé une session en PHP et utilisé xmlhhtprequest pour vérifier si session est défini chaque fois qu'une page HTML se charge et cela a fonctionné pour Cordova.
utiliser HTML5 Local Storage. vous pouvez stocker et utiliser les données à tout moment.
<script>
// Store
localStorage.setItem("lastname", "Smith");
// Retrieve
var data = localStorage.getItem("lastname");
</script>