[英]How to retrieve a session value from Javascript in another aspx.cs page?
[英]How to pass session value from aspx (stored using javascript) to cs
我可以使用以下方式將會話變量存儲在aspx頁面中:
$(document).ready(function () {
var userName = "webruster";
'<%Session["UserName"] = "' + userName + '"; %>';
alert('<%=Session["UserName"]%>');
});
現在,當我嘗試檢索Session["UserName"]
時,無法在CS中獲取該值。 為此,我有一個解決方法,但想知道它失敗的原因嗎?
替代方式:
聲明隱藏的變量和鏈接按鈕
$(document).ready(function () {
var userName = "webruster";
'<%Session["UserName"] = "' + userName + '"; %>';
var x = document.getElementById("<%=hdnsessionvalue.ClientID %>");
x.value = '<%=Session["UserName"] %>';
document.getElementById('<%= lnkButton1.ClientID %>').click();
});
因此,我能夠在服務器端的onclick
事件中檢索值。
我的問題:那么,為什么我無法使用第一種方法在CS中檢索會話值(即,沒有分配給隱藏變量)
如果您的意思是“客戶端Java腳本”,那么您至少不能直接這樣做。 會話數據存儲在服務器上,並且如果不與服務器通信,客戶端將看不到會話數據。
要訪問它,可以發出HTTP請求,並讓服務器端修改或返回數據。
更新
例
<script>
// get the variable
var data = JSON.Stringify(yourVariable);
// Make the ajax call
$.ajax({
type: "POST",
url: "aspPage.aspx/Method", //method we will call
contentType: "application/json; charset=utf-8",
data: {value: data }, //assign the 'data' values to 'value', its the data you want to send
dataType: "json",
success: function (result) {
alert('its working');
},
error: function (result) {
alert('something wrong');
}
});
</script>
在aspPage.aspx上
[WebMethod]
public static void Method(string value)
{
sting val = value; // Do whatever you want to
}
您不能直接通過javascript設置或使用會話,因為它是服務器端狀態管理技術。 為此,您應該使用“隱藏字段”。
將javascript變量設置為Hidden Field,然后在后面的代碼中,獲取Hidden Field值,並將其設置為所需的Session。
您可以通過以下方法實現它:
Java腳本
$(document).ready(function () {
var userName = "webruster";
var x = document.getElementById("<%=hdnsessionvalue.ClientID %>");
x.value = userName;
document.getElementById('<%= lnkButton1.ClientID %>').click();
});
背后的代碼(CS)
protected void lnkButton1_Click(object sender, EventArgs e)
{
string test = hdnsessionvalue.Value;
Session["UserName"] = test ;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.