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

本文主要是介绍关于用户刷新页面或直接关闭页面、浏览器时向后台发送请求的解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

1、jquery

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

window.onbeforeunload = () => {
    $.ajax({
      type: "POST",
      data: { name: "hyuga hinata" },
      url: "http://localhost:8080/closeTab",
      async: false
    });
};
其中onbeforeunload 事件在即将离开当前页面(刷新或关闭)时触发。

2、原生js

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

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不能满足需求。
--------------------- 
来源

这篇关于关于用户刷新页面或直接关闭页面、浏览器时向后台发送请求的解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1133018

相关文章

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

Xshell远程连接失败以及解决方案

《Xshell远程连接失败以及解决方案》本文介绍了在Windows11家庭版和CentOS系统中解决Xshell无法连接远程服务器问题的步骤,在Windows11家庭版中,需要通过设置添加SSH功能并... 目录一.问题描述二.原因分析及解决办法2.1添加ssh功能2.2 在Windows中开启ssh服务2

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服