Maison >interface Web >js tutoriel >Raisons et solutions pour fermer la fenêtre de la page. L'événement de localisation n'est pas exécuté_compétences Javascript
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.