J'ai un scénario dans lequel j'ouvre mon application Web dans un navigateur mais dans deux onglets distincts.
Dans un onglet, je me suis déconnecté de l'application. Par conséquent, toutes les valeurs de session deviennent nulles. Dans l'autre onglet, j'ai cliqué sur une balise d'ancrage dans l'application Web. Dans l'événement de clic jquery-on de la balise d'ancrage, j'ai vérifié la valeur de la session. Ici, je suis censé obtenir la session comme nulle (puisque j'ai déconnecté l'application de l'autre onglet), mais j'obtiens la valeur de la session comme utilisateur connecté (probablement parce qu'aucune actualisation de page n'a lieu).
Mon idée est de vérifier la session sur jQuery et si la session est nulle, déconnecter l’application, sinon afficher une page popup.
Voici mon code pour obtenir la valeur de la session
$(".a".click(function(){
var session=var data = '@Session["UserName"]';
if(session!=null){
//Show popup
}
else{
//Show loginpage
}
}))
Comment puis-je obtenir la valeur de la session actuelle dans jQuery?
La session est une tâche côté serveur, vous ne pouvez pas y accéder à l’aide de jQuery . Vous pouvez écrire un gestionnaire Http (qui partagera l’identificateur de session, le cas échéant) et renvoyer la valeur à partir de cet élément en utilisant $.ajax
.
Une autre approche estin votre chtml
<input type="hidden" id="hdnSession" data-value="@Request.RequestContext.HttpContext.Session["someKey"]" />
et le script est
var sessionValue= $("#hdnSession").data('value');
ou vous pouvez accéder directement par
jQuery(document).ready(function ($) {
var value = '@Request.RequestContext.HttpContext.Session["someKey"]';
});
Accès et affectation de la variable de session à l'aide de Javascript:
Affectation de la variable de session ASP.NET à l'aide de Javascript:
<script type="text/javascript">
function SetUserName()
{
var userName = "Shekhar Shete";
'<%Session["UserName"] = "' + userName + '"; %>';
alert('<%=Session["UserName"] %>');
}
</script>
Accéder à la variable de session ASP.NET en utilisant Javascript:
<script type="text/javascript">
function GetUserName()
{
var username = '<%= Session["UserName"] %>';
alert(username );
}
</script>
La façon dont j'ai résolu était, j'ai écrit une fonction dans le contrôleur et y ai accédé via ajax sur l'événement de clic jquery
Tout d’abord, je tiens à remercier @ Stefano Altieri de me donner une idée de la façon de mettre en œuvre le scénario ci-dessus. Vous avez absolument raison, nous ne pouvons pas accéder à la valeur de la session en cours à partir de clientside lorsque la session expire.
Aussi, j'aimerais dire qu'une bonne lecture de la question nous aidera à répondre à la question avec soin.
j'ai testé cette méthode et cela a fonctionné pour moi. J'espère que c'est utile.
en supposant que vous avez un fichier nommé index. php
.__ et lorsque l'utilisateur se connecte, vous stockez le nom d'utilisateur dans une session php; ex. $ _SESSION ['nom d'utilisateur'];
vous pouvez faire quelque chose comme ça dans votre fichier index.php
<script type='text/javascript'>
var userName = "<?php echo $_SESSION['username'] ?>"; //dont forget to place the PHP code block inside the quotation
</script>
vous pouvez maintenant accéder à la variable userId dans un autre bloc de script placé dans le fichier index.php, ou même dans un fichier .js lié au fichier index.php
ex. dans le fichier index.js
$(document).ready(function(){
alert(userId);
})
cela pourrait être très utile, car cela nous permet d'utiliser le nom d'utilisateur et d'autres données utilisateur stockées comme cookies dans les requêtes ajax, pour la mise à jour des tables de base de données, etc.
si vous ne voulez pas utiliser une variable javascript pour contenir les informations, vous pouvez utiliser une entrée avec "type = 'hidden' ';
ex. dans votre fichier index.php, écrivez:
<?php echo "<input type='hidden' id='username' value='".$_SESSION['username']."'/>";
?>
cependant, de cette manière, l'utilisateur peut voir l'entrée masquée s'il demande au navigateur de montrer le code source de la page. dans la vue source, l'entrée masquée est visible avec son contenu. vous pouvez trouver cela indesireble.
Prenez champ caché avec id ou classe et valeur avec session et obtenez-le en javascript.
Javascript Var session = $ ('# session'). Val (); // récupère jQuery
c'est comme ça que j'ai utilisé ->
<body onkeypress='myFunction(event)'>
<input type='hidden' id='homepage' value='$_SESSION[homepage]'>
<script>
function myFunction(event){var x = event.which;if(x == 13){var homepage
=document.getElementById('homepage').value;
window.location.href=homepage;}else{
document.getElementById("h1").innerHTML = "<h1> Press <i> ENTER </i> to go back... </h1>";}}
</script>
</body>
J'utilise l'application C # mvc. J'ai créé une session dans la classe de contrôleur comme ceci
string description = accessDB.LookupSomeString(key, ImpDate);
this.Session["description"] = description;
dans la vue, nous accédons à la valeur de la session et la stockons dans une variable, telle que celle-ci
var Sessiondescription = '@Session["description"]';
alert(Sessiondescription);
<script type="text/javascript">
$(document).ready(function(){
var userId=<%: Session["userId"] %>;
alert(userId);
})
</script>
**Get the current session value in jQuery**
essayez comme ça
var username= "<%= Session["UserName"]%>";