1. Descripción del problema:
Widow.location = function () se define en JS. Cuando la página está cerrada, la función logrout () no se ejecuta.
Window.OnUnload = function () {logrout (); } Function logrout (reqParam, llamado) {var usermanageServiceUrl = "http: //" + getServerAddr () + "/axis2/servicios/usermanageservice"; var urllist = []; var url = window.location.href; urllist = url.split ("?"); var sessionId = urllist [1]; reqparam.sessionID = sessionId; var pl = new SoapClientParameters (); var reqParamStr = json.stringify (reqParam); pl.Add ("reqParam", reqparamstr); SOAPClient.Invoke (UsermanageServiceUrl, "INSCOGAR", PL, falso, devolución de llamada); }2. Causa del problema:
El método SoapClient.invoke () se llama en logrout (), con el parámetro verdadero, lo que significa que el front-end y el servidor se comunican de manera asincrónica. Es decir, el front-end no ha recibido la respuesta del lado del servidor, y se ha ejecutado la siguiente declaración. En este problema, el front-end ha cerrado la página antes de que se ejecute la respuesta del servidor, por lo que se manifiesta ya que el inicio de sesión () no se ha ejecutado.
3. Solución:
Cambie el método de comunicación entre el front-end y el servidor a sincrónicamente, es decir, cambiar verdadero en el método SoapClient.Invoke () a False, y el problema se ha resuelto.