2014-05-08 13 views
26

Ich habe ein Szenario, wo ich meine Webanwendung in einem Browser öffnen, aber in zwei separaten Registerkarten.Aktuellen Sitzungswert in JavaScript abrufen?

In einer Registerkarte habe ich mich von der Anwendung abgemeldet und als Ergebnis werden alle Session-Werte Null. In der anderen Registerkarte habe ich auf ein Anker-Tag in der Webapplikation geklickt. Im jquery-on click-Ereignis des Anchor-Tags habe ich den Sitzungswert überprüft. Hier soll ich die Sitzung als null erhalten (da ich die Anwendung von der anderen Registerkarte abgemeldet habe), aber ich bekomme den Sitzungswert als angemeldeter Benutzer (wahrscheinlich weil keine Seitenaktualisierung stattfindet).

Meine Idee ist es, die Sitzung auf jQuery zu überprüfen und, wenn die Sitzung null macht die Anwendung Abmeldung ist, sonst eine Popup-Seite anzeigen ..

Hier mein Code ist für das Erhalten des Sitzungswertes

$(".a".click(function(){ 
    var session=var data = '@Session["UserName"]'; 
    if(session!=null){ 
    //Show popup 
    } 
    else{ 
    //Show loginpage 
    } 

})) 

Wie kann ich den aktuellen Sitzungswert in jQuery abrufen?

+0

möglich duplizieren von http://StackOverflow.com/questions/15519454/how-can-i-access-session-vari ableses-and-set-sie-in-javascript –

Antwort

32

Die Sitzung ist eine serverseitige Angelegenheit, auf die Sie mit jQuery nicht zugreifen können. Sie können einen Http-Handler schreiben (der die Sitzungs-ID ggf. freigibt) und den Wert von dort mit $.ajax zurückgeben.

0

versuchen, wie diese

var username= "<%= Session["UserName"]%>"; 
+0

Versuchte es, aber ich bekomme Fehler als 'Erwartet;' – SparAby

+0

@SparAby welcher Fehler? .. – Rex

14

Ein anderer Ansatz in Ihrem chtml ist

<input type="hidden" id="hdnSession" data-value="@Request.RequestContext.HttpContext.Session["someKey"]" /> 

und das Skript ist

var sessionValue= $("#hdnSession").data('value'); 

oder Sie können von

direkt zugreifen
+0

Nein, es gibt den Wert der Sitzung anstelle von null – SparAby

+0

stellen Sie sicher, dass Ihre Sitzung hat den Wert vor dem Laden der Ansicht ausgefüllt. – Najib

+0

Das gibt nicht den letzten Wert von 'someKey' zurück, sondern den Wert, wenn die Seite initialisiert wurde. –

4

Zugriff & die Session Variable zuweisen mit Javascript:

Zuordnung der ASP.NET Session Variable mit Javascript:

<script type="text/javascript"> 
function SetUserName() 
{ 
    var userName = "Shekhar Shete"; 
    '<%Session["UserName"] = "' + userName + '"; %>'; 
    alert('<%=Session["UserName"] %>'); 
} 
</script> 

Zugriff auf ASP.NET Session Variable mit Javascript:

<script type="text/javascript"> 
    function GetUserName() 
    { 

     var username = '<%= Session["UserName"] %>'; 
     alert(username); 
    } 
</script> 

Already Answered here

+0

Bitte lesen Sie die Frage sorgfältig. :) – SparAby

+0

@SparAby schreiben Sie auch FRAGE TITLE sorgfältig, wie Sie "Session-Wert in Javascript" erwähnt, daher habe ich hier gepostet! –

+4

Wie kann man eine Antwort posten, indem man den FRAGE TITLE alleine liest.Bitte lesen Sie die Frage auch ... – SparAby

4

So wie ich das gelöst wurde, habe ich eine Funktion in der Steuerung geschrieben und abgerufen es über Ajax auf jquery Click-Ereignis

Zunächst einmal möchte ich @Stefano Altieri danken, dass Sie mir eine Idee Wie Sie das obige Szenario implementieren, haben Sie absolut Recht, wir können nicht auf den aktuellen Sitzungswert von Clients zugreifen, wenn die Sitzung abläuft.

Auch ich möchte sagen, dass das richtige Lesen der Frage uns helfen wird, die Frage sorgfältig zu beantworten.

+0

indem Sie Ihren Text hier lesen "wir können nicht auf den aktuellen Sitzungswert von clientside zugreifen, wenn die Sitzung abläuft". Ich würde gerne wissen, wie auf Sitzungsvariable zugreifen, wenn es "EXPIRES"? NEIN! Sie können nicht auf die Sitzung mit der Berechtigung "Erotik" zugreifen ALSO würde ich gerne sagen, dass das Schreiben Ihrer Post uns hilft, auch zu verstehen ..! :) –

1

Nehmen Sie verstecktes Feld mit ID oder Klasse und Wert mit Sitzung und erhalten Sie es in Javascript.

Javascript var session = $ ('# Sitzung'). Val(); // Get von jQuery

+0

Nützlicher Code. Es klappt. –

2

Ich testete diese Methode und es funktionierte für mich. hoffe es ist nützlich.

vorausgesetzt, Sie haben eine Datei namens index. php
und wenn der Benutzer sich anmeldet, speichern Sie den Benutzernamen in einer PHP-Sitzung; Ex. $ _SESSION ['Benutzername'];

Sie so etwas in die Sie tun können index.php

<script type='text/javascript'> 
    var userName = "<?php echo $_SESSION['username'] ?>"; //dont forget to place the PHP code block inside the quotation 
</script> 

jetzt Datei können Sie die Variable userId in einem anderen Skriptblock in der Datei index.php gesetzt zuzugreifen, oder sogar in einer Js Datei mit der index.php verbunden

ex. in den index.js

$(document).ready(function(){ 
    alert(userId); 
}) 

Datei könnte es sehr nützlich sein, da es uns die Benutzername und andere Benutzerdaten stoerd wie Cookies in Ajax-Abfragen verwendet werden kann, für die Aktualisierung von Datenbanktabellen und so. .

wenn Sie nicht wollen, einen Javascript-Variable verwenden, um die Informationen zu enthalten, können Sie eine Eingabe mit „Typ verwenden = 'versteckt';

ex in der index.php, schreiben:

<?php echo "<input type='hidden' id='username' value='".$_SESSION['username']."'/>"; 
?> 

Auf diese Weise kann der Benutzer die versteckte Eingabe sehen, wenn er den Browser anweist, den Quellcode der Seite anzuzeigen, in der Quellansicht ist der verborgene Eingang mit seinem Inhalt sichtbar, möglicherweise finden Sie das nicht.

+0

Die Frage scheint über .NET zu sein, nicht über PHP. – dakab

+0

Nicht relevant für die OP-Frage ... PHP ist keine Lösung für eine .Net-Frage. – GoldBishop