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,代表前端和server是異步方式通信,即前端還未接收到server端的響應,便已經執行后面的語句了,在該問題中表現為前端執行logout()時還未等到server的響應,便已經將頁面關閉了,所以表現為logout()未執行。
3、解決方法:
將前端和server通信方式改為同步,即將SOAPClient.invoke()方法中true改為false,問題得到解決。
新聞熱點
疑難解答
圖片精選