page_javascript 스킬 종료 시 window.location 이벤트가 실행되지 않는 이유에 대한 분석 및 해결 방법

WBOY
풀어 주다: 2016-05-16 16:38:22
원래의
1111명이 탐색했습니다.

1. 문제 설명:

JS에서 width.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로 변경하면 문제가 해결됩니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿