>  기사  >  웹 프론트엔드  >  페이지를 닫는 이유 및 해결 방법 window.location 이벤트가 실행되지 않음_javascript 기술

페이지를 닫는 이유 및 해결 방법 window.location 이벤트가 실행되지 않음_javascript 기술

WBOY
WBOY원래의
2016-05-16 16:38:001569검색

1. 문제 설명:

JS에는 Widow.location = function()이 정의되어 있으며, 페이지가 닫히면 logout() 함수가 실행되지 않습니다.

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. 문제 원인:

logout()에서 SOAPClient.invoke() 메서드가 호출됩니다. 매개변수가 true입니다. 이는 프런트엔드와 서버가 비동기 방식으로 통신한다는 의미입니다. 즉, 프런트엔드가 응답을 받지 못했습니다. 이 질문에서는 프런트 엔드가 logout()을 실행할 때 서버의 응답을 기다리기 전에 페이지를 닫았기 때문에 logout()이 실행되지 않은 것으로 나타납니다.

3.

프런트엔드와 서버 간의 통신 방식을 동기화로 변경 즉, SOAPClient.invoke() 메서드에서 true를 false로 변경하면 문제가 해결됩니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.