Maison  >  Article  >  interface Web  >  Raisons et solutions pour fermer la fenêtre de la page. L'événement de localisation n'est pas exécuté_compétences Javascript

Raisons et solutions pour fermer la fenêtre de la page. L'événement de localisation n'est pas exécuté_compétences Javascript

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

1. Description du problème :

Widow.location = function() est définie en 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. 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