关闭页面时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 相关文章推荐
自己的js工具_Form 封装
Aug 21 Javascript
解析使用JS 清空File控件的路径值
Jul 08 Javascript
Javascript获取HTML静态页面参数传递值示例
Aug 18 Javascript
js实现的折叠导航示例
Nov 29 Javascript
AngularJS的表单使用详解
Jun 17 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
Nov 02 Javascript
js按条件生成随机json:randomjson实现方法
Apr 07 Javascript
Vue2.0 从零开始_环境搭建操作步骤
Jun 14 Javascript
详解Vue-cli代理解决跨域问题
Sep 27 Javascript
浅谈vux之x-input使用以及源码解读
Nov 04 Javascript
JS匿名函数内部this指向问题详析
May 10 Javascript
js console.log打印对象时属性缺失的解决方法
May 23 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里的JS打印函数
2006/10/09 PHP
PHP英文字母大小写转换函数小结
2014/05/03 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JavaScript类型系统之基本数据类型与包装类型
2016/01/06 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
自定义vue组件发布到npm的方法
2018/05/09 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
2019/05/30 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
Python3访问并下载网页内容的方法
2015/07/28 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
Python代理IP爬虫的新手使用教程
2019/09/05 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
师范类求职信
2014/06/21 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis