通过 WebMethod 获取从 VB.NET 到 JavaScript 的 SessionID
Get SessionID via WebMethod from VB.NET to JavaScript
我有点无能为力,因为以下代码无法正常工作:
代码隐藏:
<WebMethod(EnableSession:=True)>
Public Shared Function GetSessionID() As String
Dim sID = HttpContext.Current.Session.SessionID
Debug.WriteLine(sID)
Return sID
End Function
JavaScript:
var sID;
function init() {
sID = PageMethods.GetSessionID();
...
sID
显然存在并显示在调试输出中,但在 JavaScript sID
中保持 "undefined" 因为函数 returns "undefined"在 Firebug 控制台中执行时。那里发生了什么?
您的代码看起来没问题。你从哪里调用函数?尝试在函数内定义变量:
function init() {
var sID = PageMethods.GetSessionID();
}
如果您正在尝试读取 sessionID,为什么不直接从 cookie 中读取?
JavaScript
function readCookie(name) {
var nameEQ = escape(name) + '=',
ca = document.cookie.split(';'),
i = 0,
c;
for (i = 0; i < ca.length; i++) {
c = ca[i];
while (c.charAt(0) === ' ') { c = c.substring(1, c.length); }
if (c.indexOf(nameEQ) === 0) { return unescape(c.substring(nameEQ.length, c.length)); }
}
return null;
}
var sID = readCookie('ASP.NET_SessionId');
您需要像这样定义 PageMethods
的 OnSuccess
回调:
var sID;
function init() {
PageMethods.GetSessionID(OnSuccess);
}
function OnSuccess(response, userContext, methodName) {
sID = response;
alert(sID);
}
参考文献:
我有点无能为力,因为以下代码无法正常工作:
代码隐藏:
<WebMethod(EnableSession:=True)>
Public Shared Function GetSessionID() As String
Dim sID = HttpContext.Current.Session.SessionID
Debug.WriteLine(sID)
Return sID
End Function
JavaScript:
var sID;
function init() {
sID = PageMethods.GetSessionID();
...
sID
显然存在并显示在调试输出中,但在 JavaScript sID
中保持 "undefined" 因为函数 returns "undefined"在 Firebug 控制台中执行时。那里发生了什么?
您的代码看起来没问题。你从哪里调用函数?尝试在函数内定义变量:
function init() {
var sID = PageMethods.GetSessionID();
}
如果您正在尝试读取 sessionID,为什么不直接从 cookie 中读取?
JavaScript
function readCookie(name) {
var nameEQ = escape(name) + '=',
ca = document.cookie.split(';'),
i = 0,
c;
for (i = 0; i < ca.length; i++) {
c = ca[i];
while (c.charAt(0) === ' ') { c = c.substring(1, c.length); }
if (c.indexOf(nameEQ) === 0) { return unescape(c.substring(nameEQ.length, c.length)); }
}
return null;
}
var sID = readCookie('ASP.NET_SessionId');
您需要像这样定义 PageMethods
的 OnSuccess
回调:
var sID;
function init() {
PageMethods.GetSessionID(OnSuccess);
}
function OnSuccess(response, userContext, methodName) {
sID = response;
alert(sID);
}
参考文献: