page_javascript スキルを閉じるときに window.location イベントが実行されない理由の分析と解決策

WBOY
リリース: 2016-05-16 16:38:22
オリジナル
1091 人が閲覧しました

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. 問題の原因:

SOAPClient.invoke() メソッドが logout() で呼び出されます。パラメーターは true です。これは、フロントエンドとサーバーが非同期で通信することを意味します。つまり、フロントエンドがサーバーから応答を受信して​​いないことを意味します。この質問では、次のステートメントをすでに実行しています。フロントエンドが logout() を実行するときに、サーバーの応答を待つ前にページを閉じているため、logout() が実行されていないように見えます。

3. 解決策:

フロントエンドとサーバー間の通信方法を同期に変更する、つまり、SOAPClient.invoke() メソッドの true を false に変更すると、問題は解決します。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!