前端vue+axios实现关闭/刷新页面前向后台接口发送请求

2023-11-08

实现监听浏览器三种离开页面的方式:

在这里插入图片描述

代码:

  created() {
    window.addEventListener('beforeunload', e => {
      this.updateHandler(e)
    })
    }
  destroyed() {
    window.removeEventListener('beforeunload', e => {
      this.updateHandler(e)
    })
  },
  beforeDestroy() {
    this.cancelFunc()
  },
  methods: {
    updateHandler(e) {
      e = e || window.event
      if (e) {
        e.returnValue = '您是否确认离开此页面-您输入的数据可能不会被保存'
      }
      this.cancelFunc()
    }
    },
    async cancelFunc() {
        const params = {
          name: 'aa',
          _csrf: sessionStorage._csrf
        }
        await this.cancelOrder(params)
    },
    async cancelOrder(params) {
      const response = await API.cancelOrderAPI(params) // 请求后台接口
      console.log('同步请求', response.data)
    },

方法二:

navigator.sendBeacon()

描述
这个方法主要用于满足统计和诊断代码的需要,这些代码通常尝试在卸载(unload)文档之前向web服务器发送数据。

语法

navigator.sendBeacon(url, data);

参数

  • url 表明 data 将要被发送到的网络地址。
  • data 参数是将要发送的 ArrayBufferView 或 Blob 、DOMString 或者 FormData 类型的数据。

返回值
当用户代理成功把数据加入传输队列时,sendBeacon() 方法将会返回 true,否则返回 false。

实现
既然有了接口,那实现起来就简单了。

 window.addEventListener("beforeunload", (e) => {
    const data = {name: "小米"};
    window.navigator.sendBeacon("http://127.0.0.1:1991/loginout", JSON.stringify(data));
});

效果
不管是刷新页面还是关闭页面,后台都能接收到前端发送过来的请求,完美实现需求。

方法二参考文章:https://juejin.cn/post/6997016317635084319

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

前端vue+axios实现关闭/刷新页面前向后台接口发送请求 的相关文章

  • 当变量更新时动态刷新模板的一部分golang

    在Golang中 当变量更新时可以刷新模板的一部分吗 例如 我们可以在 Angular js 中找到这一点 基本上在我的代码中 我通过 ajax 中的邮政编码查找地址 它显示我找到的该邮政编码的用户列表 Here is a sample o
  • GWT 的 RPC 与 AJAX 不同吗?

    与 AJAX 调用相比 GWT Google Web Toolkit 的 RPC 远程过程调用 用于从浏览器 javascript 到服务器的异步操作有何不同或相似 如果它们不同 有人可以帮助我理解它们有何不同吗 我还听说这个 RPC 实现
  • 更新 Rails 应用程序的服务器端进度

    我想在 Ruby on Rails 应用程序中上传并处理文件 文件上传通常很短 但服务器端处理可能需要一些时间 超过 20 秒 所以我想给用户一些指示 比无意义的 正在处理 屏幕更好的东西 我正在尝试在视图中使用以下代码 update参数的
  • 在窗口卸载之前调用 jquery ajax 函数的最终方法是什么?

    我需要在窗口卸载之前调用 jquery ajax 函数 就我而言 它是一个 POST 我不关心返回结果 我只想更新数据库 所以答案似乎是将一个函数绑定到 unload 事件 即使用 jquery unload 函数 并且该函数进行 ajax
  • Laravel 中的 PATCH Ajax 请求

    是否可以向 Laravel 发出 Ajax PATCH 请求 或者我是否仅限于 POST Laravel 在输入隐藏字段中使用 PATCH 但是 我没有使用表单元素 只是在单击时 通过 Ajax 请求 应该部分更新记录的按钮 这条路线会是什
  • 如何在 gridview 内添加级联下拉菜单以进行编辑?

    我有一个相当标准的 ASP NET GridView 它显示具有父子关系的 2 列 尽管数据库中存在 A 列和 B 列之间的关系 但 GridView 并未实现它 我想做以下事情 当用户选择编辑该行时 将显示 2 个下拉菜单 DropDow
  • jquery UI 可拖动不适用于 AJAX

    我有一个简单的 D D 脚本 您可以在此处看到 http demo superdit com jquery dragdrop cart http demo superdit com jquery dragdrop cart 现在它工作得很好
  • 是否可以在响应完成之前读取 AJAX 请求?

    我有一个 ajax 请求需要一段时间才能完成 但服务器确实会输出一些内容 如果我只是在浏览器中加载请求 我可以看到页面正在缓慢加载 并且可以随时停止 是否可以在服务器关闭响应之前访问不完整的ajax请求 完成此操作的方法是通过侦听 xhr
  • 找出 Jquery ajax 请求被重定向到的位置

    所以 我收到了这个ajax请求 请参阅 金发女郎 大约6英尺高 看起来像这样 ajax url http example com makeThing dataType html type POST data something someot
  • 我创建了一个对话框,现在如何关闭它?

    我在下面添加了一个指向我网站的链接 用于查看头部部分中的 JS 并让您了解我是如何设置这一切的 如果您不想使用该链接 我也会尝试添加下面的代码 我最近在我网站的某些页面上学习了一些基本的 AJAX我创建了一个对话框 您将看到它出现在滚动条上
  • Django 星级评定系统和 AJAX

    我正在尝试在 Django 网站上实现星级评级系统 在我的模型中存储评级是排序的 就像在页面上显示分数一样 但我希望用户能够对页面进行评分 基本上从 1 到 5 而无需刷新或更改页面 我发现了以下内容 并且喜欢这里明星的风格 http jv
  • JQuery - 使用 JSON 的属性创建输入

    我正在尝试使用 JSON 设置的 id 和 value 属性创建一个输入 我有一个获取 JSON 的 ajax 调用 返回的数据很好 对于 JSON 中的每个对象 我想创建一个带有 ID 和 JSON 值的按钮 阿贾克斯调用 ajax ty
  • jquery ajax错误回调

    我在这里需要一些建议或者一些解释 我有一个 jquery ajax 调用 ajax type GET url base url ajax fetch counts dataType json data error function xhr
  • 在 Chrome/Safari 中添加 html5 属性后 Ajax 表单中断

    分步说明 新建 Asp Net MVC2 项目 Model public class TestModel public int Property get set 家庭控制器 HandleError public class HomeCont
  • 如何将值传递到 selectOneMenu 中的监听器

    我有 2 个下拉菜单 类型和代码 如果值 A 或 B 或 C 我希望代码下拉列表根据类型下拉列表更改值 如何将 A 或 B 或 C 的值传递给侦听器 以便它可以理解和处理我的 List
  • 如何在 jquery 中使 ajax 数据键动态化?

    我试图使内联编辑成为动态的 因此它只依赖于我的标记中的一些数据属性 所以现在的代码如下 inline edit editable function value settings var editableField this ajax typ
  • 自动完成仅显示消息并且结果可用,使用向上和向下箭头键进行导航。而是显示列表

    我的问题很清楚 我正在使用 jquery 自动完成 我不知道为什么它只向我显示消息 9 results are available use up and down arrow keys to navigate 没有向我显示结果列表 这是我的
  • 第三个下拉菜单不从数据库填充

    我有以下 Index php
  • 返回重定向作为对 Ajax(fetch、XHR 等)请求的响应

    如果浏览器收到对 ajax 请求的重定向响应 会发生什么 如果浏览器收到对 ajax 请求的重定向响应 会发生什么 如果服务器发送重定向 又名 302 响应加上 Location 标头 浏览器将自动遵循重定向 对此的回应second请求 假
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u

随机推荐