关闭窗口时发送数据

时间:2016-01-19 01:39:14

标签: javascript jquery

我正在创建一个网页,我需要在窗口关闭时更新Node.js服务器中的数据库。

代码是:

window.close(function(){
event.preventDefault();
var UrlCierra = location.search && location.search.split('=')[1];
var cierro = $.post( '/updatesala/cerrarventana', {url: UrlCierra} );  
    cierro.done(function(data){
        if (data=="Cierra"){
            window.close();
            }
            });
});

我知道代码错了,但我该如何解决呢?

2 个答案:

答案 0 :(得分:0)

作为explained in another answer,这样做可能是非常糟糕的主意,因为:

  1. 在卸载页面之前,请求可能无法完成,
  2. 强制执行同步请求会导致页面卸载被阻塞,直到请求完成,这是一种糟糕的用户体验。
  3. 即使有人在工作流程的早期退出页面,您似乎也在尝试确保更新内容?

    重新审视工作流程,看看是否有更优雅(更安全)的解决方案,例如在输入的模糊事件触发时保存。

答案 1 :(得分:-1)

您可以使用unbeforeunload事件。

window.addEventListener('onbeforeunload', () => {
    // sync call here
});

如果您需要ajax调用,请确保使用同步(jQuery中的async:false)调用。这是不推荐使用的,如果Chrome在一秒钟内没有完成,Chrome会忽略。