Comment accéder aux variables de Session et les configurer en javascript?
en code-derrière j'ai placé Session
avec quelques données.
Session["usedData"] = "sample data";
et la question Est comment obtenir la valeur de la Session(dans mon exemple;" sample data") en javascript et définir Session["usedData"]
avec une nouvelle valeur?
14 réponses
accéder et assigner la Variable de Session en utilisant Javascript:
Assigning the ASP.NET Variable de Session utilisant Javascript:
<script type="text/javascript">
function SetUserName()
{
var userName = "Shekhar Shete";
'<%Session["UserName"] = "' + userName + '"; %>';
alert('<%=Session["UserName"] %>');
}
</script>
accès ASP.NET variable de Session utilisant Javascript:
<script type="text/javascript">
function GetUserName()
{
var username = '<%= Session["UserName"] %>';
alert(username );
}
</script>
vous ne pouvez pas accéder à Session
directement en JavaScript.
vous pouvez créer un champ caché et le passer à votre page et ensuite utiliser JavaScript pour récupérer l'objet via document.getElementById
Essayez Cette
var sessionValue = '<%=Session["usedData"]%>'
Javascript ne peut pas définir directement les valeurs de session. Pour définir les valeurs de session à partir de javascript je fais appel ajax comme suit.
au fichier ASPx ou 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()
} );
});
});
côté serveur,
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"] ?? "";
}
}
Pour obtenir des valeurs de session, comme dit par Shekhar et Rajeev
var firstName = '<%= Session["FirstName"] ?? "" %>';
Espérons que cette aide.
en supposant que vous voulez dire "côté client JavaScript" - alors vous ne pouvez pas, du moins pas directement.
les données de session sont stockées sur le serveur, de sorte que le code côté client ne peut pas les voir sans communiquer avec le serveur.
pour y accéder, vous devez faire une demande HTTP et avoir un programme côté serveur pour modifier / lire et retourner les données.
Assignez une valeur à un champ caché dans le fichier code-behind. Accédez à cette valeur dans votre javascript comme un contrôle HTML normal.
vous ne pouvez pas définir les variables de session à côté de Javascript
. Si vous voulez faire cela, vous devez créer un AJAX
POST pour mettre à jour cela sur le serveur bien que si la sélection d'une voiture est un événement majeur, il pourrait juste être plus facile de POST cela.
vous pouvez également définir la variable dans une propriété et l'appeler DE js:
côté serveur:
Protected ReadOnly Property wasFieldEditedStatus() As Boolean
Get
Return If((wasFieldEdited), "true", "false")
End Get
End Property
et ensuite dans le javascript:
alert("The wasFieldEdited Value: <%= wasFieldEditedStatus %>" );
créez d'abord une méthode en code derrière pour définir session:
[System.Web.Services.WebMethod]
public static void SetSession(int id)
{
Page objp = new Page();
objp.Session["IdBalanceSheet"] = id;
}
alors appelez - le du côté du client:
function ChangeSession(values) {
PageMethods.SetSession(values);
}
vous devez définir EnablePageMethods vrai:
<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>
je cherchais une solution à ce problème, jusqu'à ce que je trouve une solution très simple pour accéder aux variables de session, en supposant que vous utilisez un .fichier php côté serveur. Espérons qu'il réponde à une partie de la question:
valeur de la session d'accès
<script type="text/javascript">
var value = <?php echo $_SESSION['key']; ?>;
console.log(value);
</script>
éditer: meilleur exemple ci-dessous, que vous pouvez essayer sur phpfiddle.org, à l'onglet "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>
définir la valeur de session
transmettre une variable de ce que, vous pouvez. par exemple,
$you = 13;
$_SESSION['user_id'] = $you;
ça devrait marcher, mais pas testé.
si vous voulez lire la valeur de la Session en javascript.Ce code vous aider.
<script type='text/javascript'>
var userID='@Session["userID"]';
</script>
c'est un triche, mais vous pouvez le faire, envoyer la valeur à sever side comme paramètre
<script>
var myVar = "hello"
window.location.href = window.location.href.replace(/[\?#].*|$/, "?param=" + myVar); //Send the variable to the server side
</script>
et du côté du serveur, récupérez le paramètre
string myVar = Request.QueryString["param"];
Session["SessionName"] = myVar;
espérons que cette aide
j'ai utilisé mon .fichier php à mettre requis dans les sessions
$_SESSION['nom'] = $phparray["nom"]; $ajaxoutput['nom'] =$phparray["nom"];
dans mon .fichier js, j'ai utilisé
sessionStorage.setItem ("nom", ajaxreturnedarray ["nom"]);
et je l'ai récupéré en utilisant
var myname= sessionStorage.getItem ("nom");
dans les autres .fichiers js ou dans même .fichiers js
si je le garde tel quel , il reviendra le même à tout moment, même vous déconnecté. donc, en me déconnectant j'ai fait
sessionStorage.setItem ("nom","");
en utilisant cette variable locale vidée. j'ai utilisé ce processus dans les sessions de connexion/déconnexion d'une page Web. j'espère que cette façon de travailler pour pour vous, car il a travaillé pour moi. svp laissez-moi savoir vos expériences.
pour modifier les données de session à partir du serveur après la création de page, vous auriez besoin D'utiliser AJAX ou même JQuery pour faire le travail. Tous les deux peuvent faire une connexion au serveur pour modifier les données de session et récupérer les données retournées à partir de cette connexion.
<?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>
maintenant nous avons besoin de faire un petit script php appelé modifySession.php apporte des modifications aux données de session et renvoie les données si nécessaire.
<?php
session_start();
$_SESSION['usedData'] = $_GET['newData']; //filter if necessary
echo $_SESSION['usedData']; // Post results back if necessary
?>
cela devrait atteindre le résultats souhaités que vous recherchez en modifiant la session via le côté serveur en utilisant PHP/AJAX.