首頁 > web前端 > js教程 > 主體

關閉頁面時window.location事件未執行的原因分析及解決方案_javascript技巧

WBOY
發布: 2016-05-16 16:38:22
原創
1092 人瀏覽過

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,問題得到解決。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!