2017-10-24 5 views
1

Ich bin ein wenig ratlos den folgenden Code mit einfach nicht funktioniert:Get SessionID über WebMethod von VB.NET zu JavaScript

-Code-behind:

<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(); 
... 

Die sID ist offensichtlich dort und in der Debug-Ausgabe gezeigt, aber in JavaScript sID hält "undefined", weil die Funktion "undefined" zurückgibt, wenn in Firebug con ausgeführt Sohle, einzig, alleinig. Was ist da los?

Antwort

1

Sie benötigen die OnSuccess Rückruf Ihrer PageMethods wie folgt zu definieren:

var sID; 

function init() { 
    PageMethods.GetSessionID(OnSuccess); 
} 

function OnSuccess(response, userContext, methodName) { 
    sID = response; 
    alert(sID); 
} 

Referenzen:

+0

Ja, das macht den Trick! Ich habe irgendwie nie etwas darüber auf den MS Pages gelesen. Vielen Dank :) – Matze

+0

Gern geschehen. Ich konnte keine offizielle Referenz in der Antwort finden. Es ist wahrscheinlich irgendwo in den unendlichen MSDN-Seiten vergraben;) – krlzlx

0

Ihr Code sieht OK aus. Woher rufst du die Funktion an? Versuchen Sie definieren die Variable innerhalb der Funktion:

function init() { 
    var sID = PageMethods.GetSessionID(); 
} 

Wenn Sie versuchen, die sessionID warum nicht nur lesen direkt aus dem Cookie zu lesen?

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'); 
+0

Gleiches "undefined" Verhalten beim Setzen von var in init(). init() wird tatsächlich von der _Default-Klasse in Default.aspx.vb aufgerufen und funktioniert bisher gut, da der Rest von JS wie erwartet ausgeführt wird. Ihr Cookie-Beispiel gibt mir "null", weil das ist, was es zurückgibt. Cookies sind eigentlich keine Option. Es geht immer noch darum, es irgendwie funktionieren zu lassen, aber die Verwendung von Cookies kann nicht die Antwort sein. – Matze

Verwandte Themen