关闭页面时window.location事件未执行的原因分析及解决方案


Posted in Javascript onSeptember 01, 2014

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,问题得到解决。

Javascript 相关文章推荐
javascript实现信息的显示和隐藏如注册页面
Dec 03 Javascript
jquery live()调用不存在的解决方法
Feb 26 Javascript
js限制input标签中只能输入中文
Jun 26 Javascript
JavaScript数据类型学习笔记
Jan 25 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
Mar 30 Javascript
JS简单实现移动端日历功能示例
Dec 28 Javascript
bootstrap multiselect下拉列表功能
Aug 22 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
May 03 Javascript
JavaScript面向对象程序设计创建对象的方法分析
Aug 13 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
Sep 01 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
Oct 23 Javascript
koa-passport实现本地验证的方法示例
Feb 20 Javascript
用js通过url传参把数据从一个页面传到另一个页面
Sep 01 #Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
Sep 01 #Javascript
Javascript让DEDECMS告别手写Tag
Sep 01 #Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 #Javascript
一个不错的仿携程自定义数据下拉选择select
Sep 01 #Javascript
原生javascript实现拖动元素示例代码
Sep 01 #Javascript
使用text方法获取Html元素文本信息示例
Sep 01 #Javascript
You might like
php根据isbn书号查询amazon网站上的图书信息的示例
2014/02/13 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
php统计数组元素个数的方法
2015/07/02 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
jQuery 表单验证扩展代码(一)
2010/10/11 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
Angular.js中下拉框实现渲染html的方法
2017/06/18 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
Node.js创建Web、TCP服务器
2017/12/05 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
jquery实现上传图片功能
2020/06/29 jQuery
儿童编程python入门
2018/05/08 Python
在Python中表示一个对象的方法
2019/06/25 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
如何在python中执行另一个py文件
2020/04/30 Python
Python requests模块安装及使用教程图解
2020/06/30 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
BSTN意大利:德国街头和运动文化高品质商店
2020/12/22 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
环境科学专业大学生自荐信格式
2013/09/21 职场文书
党章学习心得体会2016
2016/01/14 职场文书
Android存储中最基本的文件存储方式
2022/04/30 Java/Android