有没有办法使用javascript
分配会话值我可以从会话中检索值,但分配不起作用
var TempSession = '<%= Convert.ToInt32(Session["Status"]) %>';
if(TempSession ==6)
{
alert(TempSession );
TempSession =1;
}
答案 0 :(得分:5)
<强> JS: - 强>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"> </script>
<script type="text/javascript">
var TempSession = '<%= Convert.ToInt32(Session["Status"]) %>';
if (TempSession == 6) {
alert(TempSession);
$.ajax({
type: 'POST',
url: 'WebForm1.aspx/SetValue',
data: '{ val:1 }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert("New Session value is " + msg.d);
}
});
}
</script>
在您的代码隐藏文件中: -
[WebMethod]
public static string SetValue(string val)
{
HttpContext.Current.Session["Status"] = val;
return HttpContext.Current.Session["Status"].ToString();
}
答案 1 :(得分:0)
如果您正在谈论服务器端会话,那么它实际上取决于服务器端。
它应该为您分配会话ID,通常是通过cookie ....
这意味着您可以例如向服务器中的指定URL发出ajax请求,指定所需的会话ID。然后,ajax请求将通过cookie分配会话。
另一个想法是在客户端使用具有特定会话ID的JavaScript主动创建cookie(同样,如果服务器支持),即
$.cookie("SESSION", "session-id"); // Using jQuery
虽然我以前从未尝试过
请注意,cookie的名称取决于您的服务器技术(Tomcat默认为JSESSIONID
[link],ASP.NET为ASP.NET_SessionId
[link],位于“Note”下。
答案 2 :(得分:0)
您可以通过XmlHttpRequest发送数据到服务器会话。接收此数据的页面或处理程序可以将其放入服务器会话数据集合中。
答案 3 :(得分:0)
实际上MSDN上的这个教程涵盖了你的案例。它在Exposing Web Services to Client Script中描述,请参阅“在ASP.NET网页中调用静态方法”部分。
您所要做的就是在EnablePageMethods
控件上将True
属性设置为ScriptManager
,然后使用PageMethods
对象调用静态方法(它应该用{修饰} {1}}属性)在代码后面声明。
答案 4 :(得分:0)
javascript函数:
function InitializeRequest(path) {
// call server side method
PageMethods.SetDownloadPath(path);
}
功能背后的代码:
[System.Web.Services.WebMethod]
public static string SetDownloadPath(string strpath)
{
Page objp = new Page();
objp.Session["strDwnPath"] = strpath;
return strpath;
}
必须启用页面方法设置为true:
<asp:ScriptManager EnablePageMethods="true" ID="MainSM" runat="server" ScriptMode="Release" LoadScriptsBeforeUI="true"></asp:ScriptManager>