1. Problembeschreibung:
Widow.location = function () ist in js definiert. Wenn die Seite geschlossen ist, wird die Funktion moryout () nicht ausgeführt.
window.onunload = function () {logout (); } Funktion logout (reqParam, callback) {var userManageServiceUrl = "http: //" + getServeraddr () + "/axis2/dienste/userManageService"; var urllist = []; var url = window.location.href; urllist = url.split ("?"); var sessionID = urllist [1]; reqparam.sessionId = sessionId; var pl = neue SoapclientParameters (); var reqparamstr = json.stringify (reqparam); pl.add ("reqparam", reqparamstr); Soapclient.invoke (userManageServiceurl, "logout", pl, false, callback); }2. Ursache des Problems:
Die Methode SOAPCLIENT.Invoke () wird in logout () mit dem Parameter true aufgerufen, was bedeutet, dass das Front-End und der Server asynchron kommunizieren. Das heißt, das Front-End hat die Antwort von der Serverseite nicht erhalten, und die folgende Anweisung wurde ausgeführt. In diesem Problem hat das Front-End die Seite geschlossen, bevor die Antwort des Servers ausgeführt wurde, sodass es sich mit dem Logout () nicht ausgeführt hat.
3. Lösung:
Ändern Sie die Kommunikationsmethode zwischen Front-End und Server auf synchron, dh an die Methode SOAPClient.invoke () auf False und das Problem wurde gelöst.