关闭页面时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 相关文章推荐
经常用到的JavasScript事件的翻译
Apr 09 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
Jun 11 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
Sep 10 Javascript
JS、jQuery中select的用法详解
Apr 21 Javascript
jQuery的promise与deferred对象在异步回调中的作用
May 03 Javascript
js发送短信倒计时的简单实现方法
Sep 08 Javascript
javaScript中定义类或对象的五种方式总结
Dec 04 Javascript
详解springmvc 接收json对象的两种方式
Dec 06 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
Apr 25 Javascript
ES6基础之 Promise 对象用法实例详解
Aug 22 Javascript
vue-cli3 引入 font-awesome的操作
Aug 11 Javascript
利用promise及参数解构封装ajax请求的方法
Mar 24 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类Class的概念
2012/06/14 PHP
php获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
jquery自动切换tabs选项卡的具体实现
2013/12/24 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
微信小程序 video详解及简单实例
2017/01/16 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Django中ORM表的创建和增删改查方法示例
2017/11/15 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
python 写一个性能测试工具(一)
2020/10/24 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
电气自动化自荐信
2013/10/10 职场文书
房产买卖委托公证书
2014/04/04 职场文书
说明书范文
2014/05/07 职场文书
护士节活动总结
2014/08/29 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
如何使用注解方式实现 Redis 分布式锁
2022/07/23 Redis