Hoe toegang te krijgen tot sessievariabelen en ze in javascript in te stellen?

In code-behind stel ik Sessionin met wat gegevens.

Session["usedData"] = "sample data";

En de vraag is hoe ik de Session-waarde (in mijn voorbeeld; “sample data”) in javascript kan krijgen en Session["usedData"]kan instellen met een nieuwe waarde?


Antwoord 1, autoriteit 100%

Toegang tot & De sessievariabele toewijzen met Javascript:

De ASP.NET-sessievariabele toewijzen met Javascript:

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

Toegang tot ASP.NET Session-variabele met Javascript:

<script type="text/javascript">
    function GetUserName()
    {
        var username = '<%= Session["UserName"] %>';
        alert(username );
    }
</script>

Antwoord 2, autoriteit 44%

Je hebt geen rechtstreekse toegang tot Sessionin JavaScript.

U kunt een verborgen veld maken en dit doorgeven aan uw pagina en vervolgens JavaScript gebruiken om het object op te halen via document.getElementById


Antwoord 3, autoriteit 24%

Javascript kan niet direct sessiewaarden instellen.
Voor het instellen van sessiewaarden vanuit javascript doe ik ajax-oproep als volgt.

Online controleren

Bij ASPx-bestand of html,

<script type="text/javascript">
 $(function(){
   //Getting values from session and saving in javascript variable.
   // But this will be executed only at document.ready.
   var firstName = '<%= Session["FirstName"] ?? "" %>';
   var lastName = '<%= Session["LastName"] ?? "" %>';
   $("#FirstName").val(firstName);
   $("#LastName").val(lastName);
   $('Button').click(function(){
     //Posting values to save in session
     $.post(document.URL+'?mode=ajax', 
     {'FirstName':$("#FirstName").val(),
     'LastName':$("#LastName").val()
     } );
   });
 });

Aan serverzijde,

protected void Page_Load(object sender, EventArgs e)
 {
      if(Request.QueryString["mode"] != null && Request.QueryString["mode"] == "ajax")
      {
        //Saving the variables in session. Variables are posted by ajax.
        Session["FirstName"] = Request.Form["FirstName"] ?? "";
        Session["LastName"] = Request.Form["LastName"] ?? "";
      }
 }

Voor het verkrijgen van sessiewaarden, zoals gezegd door Shekhar en Rajeev

var firstName = '<%= Session["FirstName"] ?? "" %>';

Hopelijk helpt dit.


Antwoord 4, autoriteit 21%

Probeer dit

var sessionValue = '<%=Session["usedData"]%>'

Antwoord 5, autoriteit 18%

Ervan uitgaande dat u “client-side JavaScript” bedoelt, dan kunt u dat niet, althans niet rechtstreeks.

De sessiegegevens worden opgeslagen op de server, dus de code aan de clientzijde kan deze niet zien zonder te communiceren met de server.

Om toegang te krijgen, moet u een HTTP-verzoek indienen en een programma aan de serverzijde hebben om & retourneer de gegevens.


Antwoord 6, autoriteit 6%

Wijs een waarde toe aan een verborgen veld in het code-behind-bestand. Krijg toegang tot deze waarde in uw javascript als een normaal HTML-besturingselement.


Antwoord 7, autoriteit 3%

Je kunt geen sessievariabelen aan de sessiezijde instellen vanuit Javascript. Als je dit wilt doen, moet je een AJAXPOSTmaken om dit op de serverbij te werken, maar als de selectie van een auto een belangrijke evenement is het misschien makkelijker om dit te POSTEN.


Antwoord 8, autoriteit 3%

maak eerst een methode in code achter om sessie in te stellen:

[System.Web.Services.WebMethod]
 public static void SetSession(int id)
 {
     Page objp = new Page();
     objp.Session["IdBalanceSheet"] = id;
 }

noem het dan vanaf de clientzijde:

function ChangeSession(values) {
     PageMethods.SetSession(values);
     }

u moet EnablePageMethods op true zetten:

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

Antwoord 9, autoriteit 3%

Als u Sessiewaarde in javascript wilt lezen. Deze code helpt voor u.

<script type='text/javascript'>
var userID='@Session["userID"]';
</script>


Antwoord 10, autoriteit 2%

U kunt de variabele ook in een eigenschap instellen en deze vanuit js aanroepen:

Aan de serverkant:

Protected ReadOnly Property wasFieldEditedStatus() As Boolean
    Get
        Return If((wasFieldEdited), "true", "false")
    End Get
End Property

en vervolgens in het JavaScript:

alert("The wasFieldEdited Value: <%= wasFieldEditedStatus %>" );

Antwoord 11, Autoriteit 2%

Ik was op zoek naar een oplossing voor dit probleem, totdat ik een heel eenvoudige oplossing vond voor toegang tot de sessievariabelen, ervan uitgaande dat je een .php-bestand op serverzijde gebruikt. Ik hoop dat het een deel van de vraag beantwoordt:

Access Session-waarde

<script type="text/javascript">        
    var value = <?php echo $_SESSION['key']; ?>;
    console.log(value);
</script>

Bewerken: beter voorbeeld hieronder, die u kunt proberen op phpfiddle.org, op het tabblad “Codespace”

<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <?php
    $_SESSION['key'] = 10;
    $i = $_SESSION['key'];
  ?>
 </head>
 <body>
  <p id="affichage">hello</p>
  <script type="text/javascript">
    var value =  <?php echo $i; ?>;
    $("#affichage").html(value);   
  </script>
 </body>
</html>

Setessy-waarde

Geef het een variabele van alles wat, misschien wilt. bijv.

$you = 13;
$_SESSION['user_id'] = $you;

Dit zou moeten werken, tho ‘niet getest.


Antwoord 12, autoriteit 2%

Dit is een cheat, maar je kunt dit doen, stuur de waarde als parameter naar de server

<script>
var myVar = "hello"
window.location.href = window.location.href.replace(/[\?#].*|$/, "?param=" + myVar); //Send the variable to the server side
</script>

En haal de parameter op vanaf de server

string myVar = Request.QueryString["param"];
Session["SessionName"] = myVar;

hoop dat dit helpt


Antwoord 13, autoriteit 2%

Als u sessiegegevens van de server wilt wijzigen nadat u een pagina hebt gemaakt, moet u AJAX of zelfs JQuery gebruiken om de klus te klaren. Beiden kunnen verbinding maken met de server om sessiegegevens te wijzigen en teruggestuurde gegevens van die verbinding terug te krijgen.

<?php
session_start();
$_SESSION['usedData'] = "Some Value"; //setting for now since it doesn't exist
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Modifying PHP Session Data</title>
        <script type='text/javascript'>
            var usedData = '<?php echo $_SESSION['usedData']; ?>';
            var oldDataValue = null;
            /* If function used, sends new data from input field to the
               server, then gets response from server if any. */
            function modifySession () {
                var newValue = document.getElementById("newValueData").value;
                /* You could always check the newValue here before making
                   the request so you know if its set or needs filtered. */
                var xhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
                xhttp.onreadystatechange = function () {
                    if (this.readyState == 4 && this.status == 200) {
                        oldDataValue = usedData;
                        usedData = this.responseText; //response from php script
                        document.getElementById("sessionValue").innerHTML = usedData;
                        document.getElementById("sessionOldValue").innerHTML = oldDataValue;
                    }
                };
            xhttp.open("GET", "modifySession.php?newData="+newValue, true);
            xhttp.send(); 
            }
        </script>
    </head>
    <body>
        <h1><p>Modify Session</p></h1>
        Current Value: <div id='sessionValue' style='display:inline'><?php echo $_SESSION['usedData']; ?></div><br/>
        Old Value: <div id='sessionOldValue' style='display:inline'><?php echo $_SESSION['usedData']; ?></div><br/>
        New Value: <input type='text' id='newValueData' /><br/>
        <button onClick='modifySession()'>Change Value</button>
   </body>
</html>

Nu moeten we een klein PHP-script maken dat Modifysession.php wordt genoemd om wijzigingen in sessiegegevens en gegevens weer te geven indien nodig.

<?php
session_start();
$_SESSION['usedData'] = $_GET['newData']; //filter if necessary
echo $_SESSION['usedData']; // Post results back if necessary
?>

Dit zou de gewenste resultaten moeten bereiken die u zoekt door de sessie via de serverzijde te wijzigen met PHP / AJAX.


Antwoord 14, Autoriteit 2%

Dit is wat voor mij werkte.
Javascript heeft dit.

<script type="text/javascript">
var deptname = '';
</script>

C#-code erachter heeft dit – het kan op de hoofdpagina worden geplaatst, zodat het var opnieuw wordt ingesteld bij elke paginawijziging.

       String csname1 = "LoadScript";
        Type cstype = p.GetType();
        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = p.ClientScript;
        // Check to see if the startup script is already registered.
        if (!cs.IsStartupScriptRegistered(cstype, csname1))
        {
            String cstext1 = funct;
            cs.RegisterStartupScript(cstype, csname1, "deptname = 'accounting'", true);
        }
        else
        {
            String cstext = funct;
            cs.RegisterClientScriptBlock(cstype, csname1, "deptname ='accounting'",true);
        }

Voeg deze code toe aan een knop om te bevestigen dat de naam van de afdeling is gewijzigd.

alert(deptname);

Antwoord 15

ik heb mijn .php-bestand gebruikt om de vereiste sessies in te voeren

$_SESSION[‘name’] = $phparray[“name”]; $ajaxoutput[‘name’] =$phparray[“name”];

in mijn .js-bestand dat ik heb gebruikt

sessionStorage.setItem(“name”, ajaxreturnedarray[“name”]);

en ik heb dit opgehaald met

var myName= sessionStorage.getItem(“name”);

in andere .js-bestanden of in dezelfde .js-bestanden

als ik het bewaar zoals het is, zal het altijd hetzelfde terugkeren, zelfs als je bent uitgelogd. dus tijdens het uitloggen maakte ik

sessionStorage.setItem(“name”, “”);

Gebruikte dit ik heb lokale variabele leeggemaakt. Ik heb dit proces gebruikt in Login / Logout-sessies van één pagina. Ik hoop dat op deze manier voor je zal werken omdat het voor mij werkte. Laat me je ervaringen kennen.


Antwoord 16

Ik was in staat om een ​​soortgelijk probleem op te lossen met eenvoudige URL-parameters en automatisch vernieuwen.

U kunt de waarden van de URL-parameters krijgen, doen wat u wilt met hen en eenvoudig de pagina vernieuwen.

HTML:

<a href=\"webpage.aspx?parameterName=parameterValue"> LinkText </a>

C #:

string variable = Request.QueryString["parameterName"];
if (parameterName!= null)
{
   Session["sessionVariable"] += parameterName;
   Response.AddHeader("REFRESH", "1;URL=webpage.aspx");
}

Antwoord 17

<?php
    session_start();
    $_SESSION['mydata']="some text";
?>
<script>
    var myfirstdata="<?php echo $_SESSION['mydata'];?>";
</script>

Antwoord 18

Mogelijk een aantal kilometers met deze aanpak.
Dit lijkt de datum terug te krijgen naar een sessievariabele. De reeks die het retourneert geeft de JavaScript-datum weer, maar wanneer ik probeer de tekenreeks te manipuleren, geeft deze de JavaScript-code weer.

ob_start();
?>
<script type="text/javascript">
    var d = new Date();
    document.write(d);
</script>
<?
$_SESSION["date"]  = ob_get_contents();
ob_end_clean();
echo $_SESSION["date"]; // displays the date
echo substr($_SESSION["date"],28); 
// displays 'script"> var d = new Date(); document.write(d);'

Other episodes