Maison  >  Article  >  interface Web  >  Analyse et solutions aux raisons pour lesquelles l'événement window.location n'est pas exécuté lors de la fermeture des compétences page_javascript

Analyse et solutions aux raisons pour lesquelles l'événement window.location n'est pas exécuté lors de la fermeture des compétences page_javascript

WBOY
WBOYoriginal
2016-05-16 16:38:221092parcourir

1. Description du problème :

Définissez width.location = function() dans JS Lorsque la page est fermée, la fonction logout() n'est pas exécutée.

window.onunload = function() {
    logout();
  }

function logout(reqParam, callback){
    var userManageServiceUrl = "http://" + getServerAddr() + "/axis2/services/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, callback);
  }

2. Cause du problème :

La méthode SOAPClient.invoke() est appelée dans logout(). Le paramètre est vrai, ce qui signifie que le front-end et le serveur communiquent de manière asynchrone, c'est-à-dire que le front-end n'a pas reçu la réponse du serveur. et a déjà exécuté les instructions suivantes. Dans cette question, il semble que lorsque le frontal exécute logout(), il a fermé la page avant d'attendre la réponse du serveur, il semble donc que logout() n'a pas été exécuté.

3.Solution :

Changez la méthode de communication entre le front-end et le serveur en synchronisation, c'est-à-dire remplacez true dans la méthode SOAPClient.invoke() par false, et le problème est résolu.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn