1. Descrição do problema:
Viúvo.Location = function () é definido em JS. Quando a página é fechada, a função logout () não é executada.
window.onunload = function () {logout (); } Função Logout (reqparam, retorno de chamada) {var userManageServiceurl = "http: //" + getServeraddr () + "/axis2/Service/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, "Logout", PL, False, Retorno); }2. Causa do problema:
O método SoapClient.inVoke () é chamado em logout (), com o parâmetro true, o que significa que o front-end e o servidor se comunicam de maneira assíncrona. Ou seja, o front-end não recebeu a resposta do lado do servidor e a seguinte instrução foi executada. Nesse problema, o front-end fechou a página antes que a resposta do servidor fosse executada, por isso se manifesta à medida que o logout () não foi executado.
3. Solução:
Altere o método de comunicação entre o front-end e o servidor para síncrono, ou seja, altere o método SoapClient.invoke () para false, e o problema foi resolvido.