您的位置:首页 > 其它

关于用户刷新页面或直接关闭页面、浏览器时向后台发送请求的解决方案

2018-11-08 18:54 1451 查看

用户退出登录时需要修改数据库的登录状态。画面上给了用户“登出”按钮,用于退出登录,跳转至登录画面,这样可以及时向后台发送请求,来修改数据库的登录状态。虽如此,有的用户还是习惯于直接关闭画面,或者浏览器,这个时候原来用axios向后台发送登出请求的方式就行不通了。于是乎,只能换别的招了,残念!最终调查总结出两种方法,亲测有效,就做此记录。

1、jquery

引入jQuery,使用ajax发送同步请求,代码如下:

[code]window.onbeforeunload = () => {
$.ajax({
type: "POST",
data: { name: "hyuga hinata" },
url: "http://localhost:8080/closeTab",
async: false
});
};

其中onbeforeunload 事件在即将离开当前页面(刷新或关闭)时触发。

2、原生js

如非必要,可以不用引入jquery,使用原生js发送请求也是可以的,代码如下:

[code]window.onbeforeunload = () => {
var xmlhttp = new XMLHttpRequest(); // 创建异步请求
// xmlhttp.onreadystatechange = () => {
//   status == 200 用来判断当前HTTP请求完成
//   if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//   console.log(xmlhttp.responseText);
//   }
};
let data = new FormData();
data.append("name", "hyuga hinata")
xmlhttp.open("POST", "http://localhost:8080/closeTab", false); // 使用POST方法
xmlhttp.send(data); // 发送同步请求
};

 因为关闭画面不需要对返回数据再做处理,上面的onreadystatechange 事件就注释掉了。

 测试结果截图

万岁!!!请求发送成功了。

两种方法的关键在于都是发送的同步请求,不能发送异步请求。所以当初使用axois不能满足需求。

好了,做好记录!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐