Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript仅在关闭窗口时执行操作,而不是在重新加载时执行操作_Javascript_Jquery_Ajax_Sjax - Fatal编程技术网

Javascript仅在关闭窗口时执行操作,而不是在重新加载时执行操作

Javascript仅在关闭窗口时执行操作,而不是在重新加载时执行操作,javascript,jquery,ajax,sjax,Javascript,Jquery,Ajax,Sjax,我的问题是,我只想在用户关闭窗口时执行同步ajax请求,而不是在重新加载时。我有一个live auction manager界面,用户只有在注销或结束拍卖后才应关闭窗口,因为移动应用程序api会在拍卖结束后将拍卖标记为进行,这让移动应用程序用户有机会继续对产品进行竞价。但即使使用我发送给他们的用例,他们也不会注销或结束拍卖,所以我必须让它完全简单:我发送一个同步请求来结束拍卖。我找到了window.onbeforeunload事件,但即使在我按f5或离开页面时,它也会发送请求,这不是一个好的解决

我的问题是,我只想在用户关闭窗口时执行同步ajax请求,而不是在重新加载时。我有一个live auction manager界面,用户只有在注销或结束拍卖后才应关闭窗口,因为移动应用程序api会在拍卖结束后将拍卖标记为进行,这让移动应用程序用户有机会继续对产品进行竞价。但即使使用我发送给他们的用例,他们也不会注销或结束拍卖,所以我必须让它完全简单:我发送一个同步请求来结束拍卖。我找到了window.onbeforeunload事件,但即使在我按f5或离开页面时,它也会发送请求,这不是一个好的解决方案。拍卖、物品和出价都存储在memcache中,因此在关闭窗口后它们不会重置,我必须删除所有物品。迄今为止的守则:

window.onbeforeunload = closingCode;
function closingCode(e) {
    $.ajax({
        type: "POST",
        url: ajaxPath,
        async: false,
        data: {callback: "endOnClose", params: []},

    });
}

我希望有一个解决办法。提前谢谢

我找到了,但我想到了另一种可能更好的方法:如果使用ajax每x秒轮询一次,当轮询在服务器上停止2次时,执行您想在问题中执行的代码。

无法知道用户是否重新加载或关闭窗口,这是同一个“事件”