关闭页面时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 相关文章推荐
Dom 是什么的详细说明
Oct 25 Javascript
js 字符串转化成数字的代码
Jun 29 Javascript
文本域光标操作的jQuery扩展分享
Mar 10 Javascript
node.js中的path.basename方法使用说明
Dec 09 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
Angular4 中常用的指令入门总结
Jun 12 Javascript
Node.js readline 逐行读取、写入文件内容的示例
Mar 01 Javascript
vue使用jsonp抓取qq音乐数据的方法
Jun 21 Javascript
vue里input根据value改变背景色的实例
Sep 29 Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 Javascript
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
JavaScript交换变量常用4种方法解析
Sep 02 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设计模式之命令模式的深入解析
2013/06/13 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
ThinkPHP中session函数详解
2016/09/14 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
js DOM模型操作
2009/12/28 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
JavaScript纯色二维码变成彩色二维码
2020/07/23 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
python字典get()方法用法分析
2015/04/17 Python
Python中字符串对齐方法介绍
2015/05/21 Python
使用python为mysql实现restful接口
2018/01/05 Python
Python实现寻找回文数字过程解析
2020/06/09 Python
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
小学生演讲稿
2014/01/12 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
优秀志愿者感言
2015/08/01 职场文书
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript