zoukankan      html  css  js  c++  java
  • 离开页面时发送请求

    一个需求,当浏览器或页面关闭时将数据存储到数据库内。

    /*结束时保存设备状态*/
        window.onbeforeunload=function(){//必须使用beforeunload
            var url ="device_saveDeviceStatus";
            $.ajax({
                url:url,
                async:false                //必须采用同步方法
            });
        }
    

    接下来来解释一下:

      1.一开始的想法是采用onunload方法,但最后经过查询,需要使用onbeforeunload方法。

    它们之间的区别在于:

    • onbeforeunload是正要去服务器读取新的页面时调用,此时还没开始读取;
    • 而onunload则已经从服务器上读到了需要加载的新的页面,在即将替换掉当前页面时调用。
    • onunload是无法阻止页面的更新和关闭的。而 onbeforeunload 可以做到。

      2.在发送请求上,一开始采用简单的$.post(),但是$.post()是异步的方法,不行。为什么这里不能采用异步方法呢?我的理解是,如果采用异步方法,那么浏览器会在方法成功发送并响应前先unload,从而导致请求丢失。如果采用的是同步方法,浏览器就会等待请求成功,然后再unload。按照这个理解,如果采用异步方法发送后,再采用alert()进行拦截等待,应该也是可以的,只是这个方法太影响体验,所以抛弃。

    出自:https://www.cnblogs.com/qbzf-Blog/p/6341301.html

  • 相关阅读:
    设计模式-状态模式
    Nginx相关
    Docker基础使用
    JavaScript定时器及回调用法
    前端交互篇
    基于ConcurrentHashMap的本地缓存
    J.U.C体系进阶(五):juc-collections 集合框架
    J.U.C体系进阶(四):juc-sync 同步器框架
    J.U.C体系进阶(三)- juc-atomic 原子类框架
    .net core https 双向验证
  • 原文地址:https://www.cnblogs.com/linsx/p/10103314.html
Copyright © 2011-2022 走看看