Я немного незнаю, что следующий код просто не работает:
Код-за:
<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
присутствует и отображается на выходе debug, но в JavaScript sID
содержит "undefined", потому что функция возвращает "undefined" при исполнении в консоли Firebug. Что там происходит?
Вам необходимо определить OnSuccess
вызов OnSuccess
для ваших PageMethods
следующим образом:
var sID;
function init() {
PageMethods.GetSessionID(OnSuccess);
}
function OnSuccess(response, userContext, methodName) {
sID = response;
alert(sID);
}
Рекомендации:
Ваш код выглядит нормально. Откуда вы вызываете функцию? Попробуйте определить переменную внутри функции:
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');